【发布时间】:2013-01-13 09:10:10
【问题描述】:
我想使用 CreateProcess 函数从主应用程序启动子应用程序,步骤如下:
- 从没有子程序窗口的主程序启动了一个子程序
.exe - 等待
rand Sleep - 然后先终止子应用程序,然后再终止主程序。
在下面我的示例代码中,但子程序与窗口一起运行(在本例中为记事本),我无法终止子程序。
#include "stdafx.h"
#include <windows.h>
#include <conio.h>
#include <strsafe.h>
#include <direct.h>
#include <string.h>
int main(int argc, char* argv[])
{
HWND hWnd;
STARTUPINFO sInfo;
PROCESS_INFORMATION pInfo;
ZeroMemory(&sInfo, sizeof(sInfo));
sInfo.cb = sizeof(sInfo);
ZeroMemory(&pInfo, sizeof(pInfo));
if (CreateProcess("C:\\WINDOWS\\System32\\notepad.exe", NULL, NULL, NULL, false, CREATE_NO_WINDOW, NULL, NULL, &sInfo, &pInfo))
{
printf("Sleeping 100ms...\n");
Sleep(100);
DWORD dwExitCode;
GetExitCodeProcess(pInfo.hProcess, &dwExitCode);
CloseHandle(pInfo.hThread);
CloseHandle(pInfo.hProcess);
}
system("pause");
return 0;
}
【问题讨论】:
-
@chris 要使用 TerminateProcess 我必须知道 PID,那么在这种情况下如何获取进程 PID。
-
我将我的 cmets 和建议移至答案。请注意,您需要的是句柄,而不是进程 ID。
标签: c++ c visual-c++