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