首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Diagnostic.Process.Start不工作

System.Diagnostic.Process.Start不工作
EN

Stack Overflow用户
提问于 2012-03-03 01:13:04
回答 2查看 508关注 0票数 0

我有这个代码

代码语言:javascript
复制
                Process P = new Process();
                P.EnableRaisingEvents = true;
                P.StartInfo = new ProcessStartInfo();
                P.StartInfo.FileName = 11.avi;
                P.StartInfo.UseShellExecute = true;

                P.Start();
                P.WaitForExit();
                P.Dispose();

当我运行它时,Windows Media Player启动并播放avi文件。到目前为止一切正常,但是当调用WaitForExit时,我得到一个异常“没有进程与这个对象相关联”。

我做错了什么,将ShellExcecute设置为false也无济于事。真正奇怪的是,如果我使用一个mkv文件,VLC播放器就会启动,而这段代码运行得很好。.avi文件有什么特别之处(文件扩展名,我的意思是显然文件类型在这里并不重要)

谢谢

EN

回答 2

Stack Overflow用户

发布于 2012-03-03 01:17:43

AVI没有什么特别之处。从命令行启动时,Media Player会衍生一个进程并退出。正因为如此,没有什么需要等待的。VLC播放器可能不会这样做。

您可以通过打开命令提示符并启动每种类型的文件来查看行为来验证这一点。

请考虑使用Embedding the Windows Media Player Control in a C# Solution中概述的媒体播放器的方法。

票数 0
EN

Stack Overflow用户

发布于 2012-03-03 01:36:15

由于您已将UseShellExecute设置为true,因此实际上是操作系统外壳启动了该进程。如果您查看启动的wmplayer实例的父进程,您将看到启动它的实际上不是您的进程(只是测试它,在我的例子中它是一个svchost.exe实例),因此您的Process实例并不与实际的进程相关联。启动进程的方式取决于shell如何处理您的文件扩展名,因此avi在这里很重要。

请注意,在本例中,P.Start();返回false

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9537479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档