【发布时间】:2014-02-24 08:52:17
【问题描述】:
我正在尝试使用 TerminateProcess 来终止由 ShellExecuteEX 启动的应用程序,如下所示:
SHELLEXECUTEINFO ExecuteInfo;
ExecuteInfo.fMask = SEE_MASK_FLAG_NO_UI; /* Odd but true */
ExecuteInfo.hwnd = NULL;
ExecuteInfo.cbSize = sizeof(ExecuteInfo);
ExecuteInfo.lpVerb = NULL;
ExecuteInfo.lpFile = "http://www.microsoft.com";
ExecuteInfo.lpParameters = "";
ExecuteInfo.lpDirectory = NULL;
ExecuteInfo.nShow = SW_SHOW;;
ShellExecuteEx(&ExecuteInfo);
//WaitForSingleObject(ExecuteInfo.hProcess, 0);
Sleep(4000);
TerminateProcess(ExecuteInfo.hProcess, 0);
IE 被打开但它永远不会关闭。我做错了吗?
【问题讨论】:
-
未验证
ShellExecuteEx返回的TRUE是错误的。 ;-] -
根据MSDN,它不会退出,直到所有挂起的 I/O 完成或取消。作为浏览器,可能会发生大量 I/O。我知道您永远不应该尝试终止进程,尤其是以这种方式。也许您应该这样做,而是请求进程退出(以任何方式完成)?
-
@JeffMercado :通常会向主线程发送
WM_CLOSE消息。
标签: c++ visual-studio-2010 terminate shellexecute