oczekiwanie na zakończenie programu

0

Witam
Czy jest możliwe aby oczekiwać na zakończenie obcego programu przy aktywnym okienku mojego programu?
Funkcja której użyłem:

void __fastcall ExecuteApplication(AnsiString  FileName,  char param[], HWND h)
{
 SHELLEXECUTEINFO sei;
 memset(&sei, 0, sizeof (sei));
 sei.cbSize = sizeof(sei);
 sei.fMask = SEE_MASK_NOCLOSEPROCESS;
 sei.hwnd = h;
 sei.lpVerb = "open";
 sei.lpFile = FileName.c_str();
 sei.lpParameters = param;
 sei.nShow =SW_MINIMIZE; //SW_MINIMIZE; //SW_HIDE; //SW_SHOWDEFAULT;

 if(ShellExecuteEx(&sei))
  try
  {
   WaitForSingleObject(sei.hProcess, INFINITE);
  }
  __finally
 {
  CloseHandle(sei.hProcess);
 }
}

Przy wywołaniu WaitForSingleObject(sei.hProcess, INFINITE) okno mojego programu jest nieaktywne.
Czy jest jakiś sposób aby to zmienić?

Bardzo proszę o pomoc

0

Przenieś WaitForSingleObject do osobnego wątku, lub zastąp przez MsgWaitForMultipleObjects.

while (!done)
{
    dwResult = MsgWaitForMultipleObjects( 1, &sei.hProcess, FALSE, INFINITE, QS_ALLEVENTS);
    switch( dwResult )
    {
        case WAIT_OBJECT_0 + 0:
            // proces zakończył
            done = true;
            break;

        case WAIT_OBJECT_0 + 1:
            // Windows messages are available
            while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)
            {
                if( !IsDialogMessage(hwnd, &msg))
                {
                    TranslateMessage(&msg);
                    DispatchMessage(&msg);
                }
            }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0