Bonjour,
je suis actuellement face à un problème que je ne sais résoudre, merci d'avance pour votre aide !!!
Dans une application (faite en DELPHI 7), j'ai un thread qui lance un programme et doit attendre la fermeture de ce dernier pour se détruire.
Pour ce faire j'utilise la fonction suivante :
....
If (CreateProcess(nil, PChar(Command), nil, nil, False, wPriority, nil, nil,
StartupInfo, ProcessInfo)) Then
Begin
WaitForSingleObject(ProcessInfo.hProcess, Timeout);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
....
En parallèle dans le Thread Principale de l'application j'ai un Timer qui doit raffraichir la liste des Fenêtres Windows avec l'appelle de la fonction suivante :
....
EnumWindows(@CallEnum,0);
....
qui appelle l'API windows pour que cette dernier fasse des CALLBACKs sur la procedure globale CallEnum de mon programme.
L'api Windows réalise les CALLBACKs sans problème jusqu'à ce que la méthode WaitForSingleObject soit appellé...Et là... les CALLBACK ne sont plus appellé.
Dès que le programme lancé avec CreateProcess est fermé, la procedure WaitForSingleObject rend la main, et les CALLBACK sont de nouveau appellés par l'API.
QUESTION: Existe t il une procedure de remplacement de WaitForSingleObject pour que les CALLBACK windows fonctionnent (même si le Thread qui à lancé le processus est en attente de sa fermeture) ??
Si ce n'est pas clair, je suis prets à fournir un programme d'exemple en Delphi 7.
Merci à tous.
Sébastien
Partager