2016-03-21 43 views
1

我试图打开他们喜欢此相关应用的不同文件的过程:我怎样才能用于打开C#文件

   ProcessPath = @"C:\Users\Public\Pictures\Sample Pictures\Tulips.jpg"; 
       ProcessStartInfo processStartInfo = new ProcessStartInfo(); 
       processStartInfo.FileName = ProcessPath; 
       processStartInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(ProcessPath); 

       process = new Process(); 
       process.StartInfo = processStartInfo; 
       process.EnableRaisingEvents = true; 
       process.Exited += Process_Exited; 
       process.Start();  

请你能帮助我获取表示处理对象的保持应用程序打开,因为在调用process.Start()之后;流程中的大部分字段都会引发异常。

谢谢。

+0

这是一个过程,尽管它不一定就绪(或者已经不再需要)了 - 不能保证要求shell打开一个文件会导致一个新的进程;认为所有的Excel文件都在一个实例中打开例如Excel)。你想做什么? – Luaan

+0

主要以其默认应用程序打开图像文件或PDF。所以我上面发布的代码将打开Windows照片查看器中的默认窗口图像之一,但启动它的过程将是无用的,据我所知。 – Timmoth

+0

这个过程在你看的时候可能没有做任何事情,但是你正在做的是等同于“start my.jpg”,而不是用你的jpg打开一个应用程序来打开,所以process.WaitForInputIdle();不会帮助,因为该过程可能已经终止,因为该过程然后催生了实际的应用程序 – BugFinder

回答

0

我设法找到一个解决方案:使用Windows API函数

 [DllImport("shell32.dll")] 
    static extern int FindExecutable(string file, string directory, [Out] StringBuilder lpResult); 

返回关联的应用程序路径给定文件

。然后,我可以使用我发布的原始代码执行与原始文件传递相关的应用程序作为参数!