我试图通过使用Process.Start()打开一个excel文件,然后一段时间后我必须关闭打开的excel文件。这是代码。
def runSubProcess(self):
p=subprocess.Popen(["python3.4.1","script.py args"],stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output=p.communicate()[0]
我能够打开文件,但在process.CloseMainWindow()中,它会抛出异常“没有进程与此对象关联”。我已经尝试过process.Close()但它也没有用(没有抛出异常)。进程对象显示System.InvalidOperationException。请有人帮我解决这个问题。提前致谢
答案 0 :(得分:0)
假设您希望在用户完成操作您希望excel打开的文件后继续执行代码,我建议您使用process.WaitForExit();
然后您可以在wait方法上设置超时,如下所示:
var process = new Process();
process.StartInfo = new ProcessStartInfo()
{
UseShellExecute = true,
FileName = file
};
process.Start();
process.WaitForExit(60000);
如果达到超时,则进程将停止并且输出可以通过添加以下内容来解析输出错误:
RedirectStandardError = true
RedirectStandardOutput = true
到您的StartInfo()
对象