在继续脚本之前等待属性窗口对话框

时间:2013-05-07 23:05:31

标签: c#

我有一段代码来显示文件的属性窗口

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = @"C:\Users\nyongrand\Desktop\Internet Download Manager.lnk";
psi.Verb = "properties";
Process process = Process.Start(psi);
process.WaitForExit(); //This give me exception, Object reference not set to an instance of an object.

我想要的是等到窗口属性关闭,因为如果我的代码关闭,属性窗口也将关闭,我需要一个解决方案,我的代码能够等待属性窗口关闭,或者我的代码可以在不关闭属性窗口的情况下退出。

2 个答案:

答案 0 :(得分:1)

您获得的例外情况意味着,当您尝试调用其process成员方法时,nullWaitForExit。所以你应该问的问题是为什么。

the documentation开始,查看您正在调用的Process.Start函数的重载,以查看它实际返回的内容。果然,它会返回一个Process对象,但仅限于某些条件:

  

返回值
  输入:System.Diagnostics.Process
  与流程资源关联的新Process组件,如果未启动任何流程资源,则为null(例如,如果重用现有流程)。

并且,从“备注”部分:

  

注意:如果要启动的可执行文件的地址是URL,则不会启动该过程并返回null

因此,如果重新使用现有流程,Process.Start方法将返回null。而且你不能在null上调用方法。

答案 1 :(得分:0)

尝试替换

Process process = Process.Start(psi);

Process process = new Process();

if(process.Start(psi))
{
    process.WaitForExit();
}
else
{
    //Do something here to handle your process failing to start
}

您的代码遇到的问题是Process.Start()返回一个布尔值。它不是Process对象的工厂。