[c#] 기본 응용 프로그램 및 매개 변수가있는 C # 파일 열기

기본 응용 프로그램으로 파일을 여는 가장 쉬운 방법은 다음과 같습니다.

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();


답변

프로젝트 속성 아래에 설정을 추가하고 기본으로 구성 할 수있는 깨끗하고 쉽게 구성 가능한 설정을 사용하는 방법으로 사용하십시오.

방법 : 디자인 타임에 새 설정 만들기

업데이트 : 아래 댓글 후

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭
  2. 새 항목 추가
  3. Visual C # 항목에서-> 일반
  4. 설정 파일 선택

답변