Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows WinForms应用程序可以';无法使用Process.CloseMain窗口关闭_Windows_Winforms_Process - Fatal编程技术网

Windows WinForms应用程序可以';无法使用Process.CloseMain窗口关闭

Windows WinForms应用程序可以';无法使用Process.CloseMain窗口关闭,windows,winforms,process,Windows,Winforms,Process,我有一个.Net 2.0 WinForms应用程序,它使用Process.Start启动第二个WinForms应用程序,然后在以后尝试使用Process.CloseMainWindow再次关闭它 但是,对CloseMainWindow的调用无效。第二个应用程序保持打开状态,即使它是完全响应的(据我所知是空闲的),并且可以立即手动关闭。设置ProcessStartInfo.UseShellExecute=false并再次检查。正如Hans Passant所建议的,要关闭的进程的“主”窗口确实被猜错

我有一个.Net 2.0 WinForms应用程序,它使用Process.Start启动第二个WinForms应用程序,然后在以后尝试使用Process.CloseMainWindow再次关闭它


但是,对CloseMainWindow的调用无效。第二个应用程序保持打开状态,即使它是完全响应的(据我所知是空闲的),并且可以立即手动关闭。

设置
ProcessStartInfo.UseShellExecute=false
并再次检查。

正如Hans Passant所建议的,要关闭的进程的“主”窗口确实被猜错了,因此调用Process.CloseMainWindow没有达到预期效果。

不止一个原因,UAC肯定是其中之一。当一个应用程序创建多个窗口时,猜测哪个窗口是“主”窗口从根本上来说也是很棘手的。当您创建启动屏幕或登录窗口等操作时,就会出现问题。使用Spy++并将Process.MainWindowHandle与您在工具中看到的窗口进行比较。@HansPassant对,Process.MainWindowHandle被“猜测”错了。什么是关闭流程的更安全的方法?友好地问,而不是试图用大锤敲打它。一个套接字或命名管道或WCF很好。@ HANSPASANT听起来很不错,会考虑的。