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;
}