アプリケーションを起動して終了待機


アプリケーションを起動して終了待機します。
(1)CreateProcess 関数でアプリケーションを起動。
(2)WaitForSingleObject 関数で終了を待つ。


Sample code

メモ帳を起動して終了を待機します。
サンプルはタイムアウトなしで指定。


#include <windows.h>
#include <tchar.h>

BOOL WaitProcess(LPTSTR lpszImageName);

int APIENTRY _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
    TCHAR szprc[] = TEXT("NOTEPAD.EXE");
    if(WaitProcess(szprc)) {
        MessageBox(NULL, TEXT("Wait Done"), TEXT(""), 0);
    }
    return 0;
}

BOOL WaitProcess(LPTSTR lpszApp)
{
    BOOL bResult = FALSE;
    
    STARTUPINFO si = {0};
    PROCESS_INFORMATION pi = {0};
    si.cb = sizeof(STARTUPINFO);
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_SHOWNORMAL;
    
    if(CreateProcess(NULL, lpszApp, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
        if(WaitForSingleObject(pi.hProcess, INFINITE) == WAIT_OBJECT_0) {
            bResult = TRUE;
        }
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
    }
    return bResult;
}

一覧メニューへ