Kenji Aoki wrote:
>  今はCreateProcessを行ったときのhProcessを記録しておき、所定時間経過後
> 無条件で(プロセスが生きているかチェックせずに)TerminateProcessしていますが

おおよそ、こんな感じになるでしょう。

    CreateProcess( abc.exe , .... , &pi )
    r = WaitForSingleObject( pi.hProcess, 30*1000 )    ←ミソ
    switch (r) {
      case WAIT_TIMEOUT:
          TerminateProcess( pi.hProcess )
          break;
      case WAIT_OBJECT_0:
          GetExitCodeProcess( pi.hProcess, &result )   ←processが返した値が欲しいとき
          MessageBox(hwnd, "うまくいったよ", "(^^)", MB_OK);
          break;
      ...
       ...
    }
    CloseHandle(pi.hThread)
    CloseHandle(pi.hProcess)

WaitForSingleObject, WaitForMultipleObjects, MsgWaitForMultipleObjects
などがありますので、必要に応じて使い分けてください。

----- Takeshi  SHIGIHARA
      cygnus@tka.att.ne.jp
      cygnus@po.jah.ne.jp -----