【发布时间】:2009-11-29 12:46:21
【问题描述】:
当我使用 shell 函数打开它时,我注意到一个应用程序句柄。 然后我稍后使用该句柄关闭应用程序。 但是,用户也可以自己关闭该其他应用程序。 然后该句柄是否可以被 Windows 重用,以便在我使用该句柄时关闭另一个进程。 有可能吗?
【问题讨论】:
当我使用 shell 函数打开它时,我注意到一个应用程序句柄。 然后我稍后使用该句柄关闭应用程序。 但是,用户也可以自己关闭该其他应用程序。 然后该句柄是否可以被 Windows 重用,以便在我使用该句柄时关闭另一个进程。 有可能吗?
【问题讨论】:
不,您不必担心。由 OpenProcess、ShellExecuteEx() 或 CreateProcess 返回的句柄使进程对象保持活动状态。这样就可以在进程终止后调用 GetExitCodeProcess() 来检索退出代码。
在对象的最后一个句柄关闭之前,对象不会被释放。与此线程中先前给出的建议相反,调用 CloseHandle() 非常重要,否则您将发生泄漏。
【讨论】:
您可以等待进程句柄来确定它何时退出。
WaitForSingleObject(hProcess, INFINITE);
一旦返回,您就知道该进程已退出,您无需关闭它。
【讨论】: