연결된 응용 프로그램으로 파일 열기
연결된 앱으로 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
'program story' 카테고리의 다른 글
MongoDB에서 $ in 쿼리에 전달되는 최대 매개 변수 수는 얼마입니까? (0) | 2020.12.11 |
---|---|
"현재 사용 중이므로 데이터베이스를 삭제할 수 없습니다." (0) | 2020.12.11 |
플롯 할 matplotlib Axes 인스턴스를 얻는 방법은 무엇입니까? (0) | 2020.12.11 |
SSL 연결을 설정할 수 없습니다. SSL 인증서를 수정하려면 어떻게해야합니까? (0) | 2020.12.11 |
.vagrant 파일을 삭제할 때 VM을 어떻게 파괴합니까? (0) | 2020.12.11 |