기본 응용 프로그램으로 파일을 여는 가장 쉬운 방법은 다음과 같습니다.
System.Diagnostics.Process.Start(@"c:\myPDF.pdf");
그러나 정해진 페이지 번호로 pdf를 열고 싶기 때문에 기본 응용 프로그램에 매개 변수를 설정하는 방법이 있는지 알고 싶습니다.
새 프로세스를 만들고 매개 변수를 설정하는 방법을 알고 있지만 이렇게하면 응용 프로그램의 경로를 표시해야하며 이식 가능한 응용 프로그램을 원하며 매번 응용 프로그램의 경로를 설정할 필요가 없습니다. 다른 컴퓨터에서 응용 프로그램을 사용합니다. 내 생각은 컴퓨터에 pdf 리더가 설치되어 있고 페이지를 열어야 할 내용 만 말할 것으로 예상하는 것입니다.
감사.
답변
파일을 기본 응용 프로그램으로 열려면 Acrobat 또는 Reader를 지정하지 않으면 지정된 페이지에서 파일을 열 수 없습니다.
반면에 Acrobat 또는 Reader를 지정해도 괜찮다면 계속 읽으십시오.
다음과 같이 전체 Acrobat 경로를 말하지 않고도 수행 할 수 있습니다.
Process myProcess = new Process();
myProcess.StartInfo.FileName = "acroRd32.exe"; //not the full application path
myProcess.StartInfo.Arguments = "/A \"page=2=OpenActions\" C:\\example.pdf";
myProcess.Start();
Reader에서 PDF를 열지 않고 Acrobat으로 열려면 다음과 같이 두 번째 줄을 변경합니다.
myProcess.StartInfo.FileName = "Acrobat.exe";
레지스트리를 쿼리하여 pdf 파일을 열기위한 기본 응용 프로그램을 식별 한 다음 그에 따라 프로세스의 StartInfo에서 FileName을 정의 할 수 있습니다.
자세한 내용은 다음 질문을 따르십시오 . Windows에서 특정 파일 형식을 열기위한 기본 응용 프로그램 찾기
답변
이것은 가까워 야합니다!
public static void OpenWithDefaultProgram(string path)
{
Process fileopener = new Process();
fileopener.StartInfo.FileName = "explorer";
fileopener.StartInfo.Arguments = "\"" + path + "\"";
fileopener.Start();
}
답변
xsl 로 연결된 블로그 게시물의 VB 코드 를 C #으로 변환하고 약간 수정했습니다.
public static bool TryGetRegisteredApplication(
string extension, out string registeredApp)
{
string extensionId = GetClassesRootKeyDefaultValue(extension);
if (extensionId == null)
{
registeredApp = null;
return false;
}
string openCommand = GetClassesRootKeyDefaultValue(
Path.Combine(new[] {extensionId, "shell", "open", "command"}));
if (openCommand == null)
{
registeredApp = null;
return false;
}
registeredApp = openCommand
.Replace("%1", string.Empty)
.Replace("\"", string.Empty)
.Trim();
return true;
}
private static string GetClassesRootKeyDefaultValue(string keyPath)
{
using (var key = Registry.ClassesRoot.OpenSubKey(keyPath))
{
if (key == null)
{
return null;
}
var defaultValue = key.GetValue(null);
if (defaultValue == null)
{
return null;
}
return defaultValue.ToString();
}
}
편집-이것은 신뢰할 수 없습니다. Windows에서 특정 파일 형식을 열기위한 기본 응용 프로그램 찾기를 참조하십시오 .
답변
당신은 시도 할 수 있습니다
Process process = new Process();
process.StartInfo.FileName = "yourProgram.exe";
process.StartInfo.Arguments = ..... //your parameters
process.Start();
답변
프로젝트 속성 아래에 설정을 추가하고 기본으로 구성 할 수있는 깨끗하고 쉽게 구성 가능한 설정을 사용하는 방법으로 사용하십시오.
업데이트 : 아래 댓글 후
- 프로젝트를 마우스 오른쪽 버튼으로 클릭
- 새 항목 추가
- Visual C # 항목에서-> 일반
- 설정 파일 선택