我使用Process类打开应用程序:
System.Diagnostics.Process vsProc = new System.Diagnostics.Process();
vsProc.StartInfo.FileName = "program.exe";
vsProc.Start();
如果我只是将其vsProc.Kill()
杀死,则应用程序会以不正确的方式结束。我怎样才能正确关闭它?
答案 0 :(得分:2)
如何'正确'关闭程序'取决于您正在处理的程序100%。如果你是编写儿童计划的人,你就可以实施正确的计划。理智的行为。如果没有,您最好的一般下注是找到应用程序的主窗口并向其发送一个关闭请求...而不是终止该过程。
答案 1 :(得分:1)
我认为它错误结束的部分原因是你在杀死之前没有释放与之相关的所有资源。尝试使用CloseMainWindow()和Close()方法。 CloseMainWindow将向指定的应用程序主窗口发送关闭消息,而Close()应释放与该进程关联的资源。
答案 2 :(得分:0)
如果您需要等待应用程序完成其工作,然后继续父进程,则可以在其上调用WaitForExit()。如果它是一个非终止应用程序,那么你的意思是“结束错误”?
答案 3 :(得分:0)
vsProc.Close();
释放与此组件关联的所有资源。还可以获得JetBrains ReSharper ......
答案 4 :(得分:0)
假设vsProc
有一个主窗口,如果窗口关闭,它将干净地结束程序,您可以使用步骤here。如果您不知道标题或标题是动态的,请使用vsProc.MainWindowTitle
。您只需调用vsProc.MainWindowHandle
并使用结果值调用SendMessage命令即可跳过FindWindow步骤。