program story

연결된 응용 프로그램으로 파일 열기

inputbox 2020. 12. 11. 08:07
반응형

연결된 응용 프로그램으로 파일 열기


연결된 앱으로 C # 앱에서 파일을 여는 데 도움을 요청하고 싶습니다. 나는 이것을 시도했다 :

      ProcessStartInfo pi = new ProcessStartInfo(file);
      pi.Arguments = Path.GetFileName(file);
      pi.UseShellExecute = true;
      pi.WorkingDirectory = Path.GetDirectoryName(file);
      pi.FileName = file;
      pi.Verb = "OPEN";
      Process.Start(pi);

아니면 이거:

      Process.Start(file);

여기서 file두 예제의 문자열 은 열려고하는 파일의 전체 경로를 나타냅니다. 이제 ACDSee 앱을 사용 하는 (jpg) 이미지를 제외하고 모든 것이 잘 작동 합니다 . Irfanview 협회는 MS 오피스 문서도 잘 작동합니다. acdsee와 관련된 jpg 이미지를 열려고 시도한 후 알림 영역에서 acdsee를 실행하고 파일을 열지 않습니다.

* .jpg 이미지 에 대한 레지스트리 CLASSES_ROOT 에 관련 앱으로 ACDSee.JPG 값이 있으며이 키 아래에 shell- > Open-> Command 경로가 있음을 발견했습니다.

"C:\Program Files\ACD Systems\ACDSee\ACDSee.exe" /dde

이 이상한 /dde이유가 파일을 열 수없는 이유 라고 생각 합니다. 동일한 reg 키 shell-> OpenDDEExec 에 값 이있는 키 항목 있음을 깨달았습니다.[open("%1")]

Irfan보기 또는 기타 확인 된 앱의 경우 ddeexec가 없으며 다음과 같은 일반 명령 만 있습니다.

"C:\Program Files (x86)\IrfanView\i_view32.exe" "%1"

파일 이름에 대한 % 1을 ( 를) 교체 한 후 명령 줄에서 실행할 수 있지만 명령 줄의 acdsee 항목에서 명령을 실행할 수 없습니다.

그래서 내 질문은, 더블 클릭, 표준 및 이것들에 의해 탐색기에서와 같이 모든 파일실행할ProcessStartInfo있도록 개체를 어떻게 설정할 수 DDEExec있습니까? DDEExec내가 알아야 할 다른 것이 있습니까? 내 EN에 감사하고 미안합니다


그냥 써

System.Diagnostics.Process.Start(@"file path");

System.Diagnostics.Process.Start(@"C:\foo.jpg");
System.Diagnostics.Process.Start(@"C:\foo.doc");
System.Diagnostics.Process.Start(@"C:\foo.dxf");
...

그리고 쉘은 일반적인 더블 클릭과 마찬가지로 레지스트리에서 읽는 관련 프로그램을 실행합니다.


이것은 오래된 스레드이지만 누군가가 나처럼 그것을 보게 될 경우를 대비하여. pi.FileName은 파일을 여는 데 사용할 실행 파일의 파일 이름 (및 가능하면 file의 전체 경로)으로 설정되어야합니다. 아래 코드는 VLC로 비디오 파일을 열 때 작동합니다.

var path = files[currentIndex].fileName;
var pi = new ProcessStartInfo(path)
{
    Arguments = Path.GetFileName(path),
    UseShellExecute = true,
    WorkingDirectory = Path.GetDirectoryName(path),
    FileName = "C:\\Program Files (x86)\\VideoLAN\\VLC\\vlc.exe",
    Verb = "OPEN"
};
Process.Start(pi)

Tigran의 대답은 작동하지만 Windows의 기본 응용 프로그램을 사용하여 파일을 열 것이므로 기본값이 아닌 응용 프로그램으로 파일을 열려면 ProcessStartInfo를 사용하는 것이 유용 할 수 있습니다.


에서 닷넷 핵심 이되어야한다 (2.2 현재) :

new Process
{
    StartInfo = new ProcessStartInfo(@"file path")
    {
        UseShellExecute = true
    }
}.Start();

관련 github 문제는 여기 에서 찾을 수 있습니다 .

참고 URL : https://stackoverflow.com/questions/10174156/open-file-with-related-application

반응형