如何使用HINSTANCE终止应用程序

| 我正在使用ShellExecute从c ++生成一个应用程序,因此我具有该应用程序的提示。 我现在该如何使用HINSTANCE关闭它?我可以使用WaitForSingleObject()等待应用程序完成吗?     
已邀请:
首先,在现代版本的Windows中,“ 0”用处很小-但是您拥有的实际上并不是“ 0”。
ShellExecute
的收益实际上只是一个大于或小于32的值,分别表示成功或失败。 幸运的是,如果使用
ShellExecuteEx
,则可以获取新流程的流程句柄,并可以使用它来控制流程。 @Remus链接的MSDN文章很不错,但是(IMO)如果目标应用程序是(或者可能是)控制台应用程序,那么还有另一步可能会有用。在这种情况下,它通常不会处理
WM_CLOSE
消息。但是,您可以将DLL注入到进程中,并从进程内部进行干净的关机(例如,如果调用
exit
,并且目标程序是用C编写的,则会得到一个在死亡之前,有机会冲洗和关闭文件,运行用
atexit
注册的东西等)。 如果失败,则可能要使用ѭ7来发送控制中断。 然后,如果所有这些都无法退出,请致电ѭ8。     
无法正常关闭进程。使用
TerminateProcess
是一种突然的非优美方式,但这将阻止进程运行其自己的清理代码,并且可能使内容“陷入僵局”,请参阅Windows XP中进程如何退出的快速概述。 很长一段时间以来,关于“终止进程”的常识是将WM_CLOSE发送到进程的最上面的未拥有窗口,以期望应用程序将通过正常退出来响应。请参阅如何在Win32中终止应用程序“干净地”,以及有关以下内容的强制性阅读:找到正确的窗口:可以有多个(或零个):将进程转换为窗口 Ans您还应该阅读ShellExecute函数返回的HINSTANCE怎么办?理解为什么您拥有的HINSTANCE不值得信赖,不要说没用...     

要回复问题请先登录注册