CreateProcess() ne stoppe plus mon prog

CreateProcess() ne stoppe plus mon prog - Delphi/Pascal - Programmation

Marsh Posté le 11-08-2011 à 21:53:52    

Bonjour à tous :)
 
D'habitude, CreateProcess() attend la fin de l'exécution du processus fils qu'il a appelé. Je n'ai pas ce pb avec lui... enfin jusqu'à maintenant.
 

Code :
  1. Procedure Appel_Navigateur;
  2. Var
  3.   StartupInfo: TStartupinfo;
  4.   ProcessInfo: TProcessInformation;
  5.   Retour : longbool;
  6.   Appel, Rep : string;
  7.   Erreur : longint;
  8. begin
  9.   //  APPEL du navigateur  --------------------------
  10.   FillChar(Startupinfo,Sizeof(TStartupinfo),0);
  11.   Startupinfo.cb:=Sizeof(TStartupInfo);
  12.   StartupInfo.wShowWindow := SW_SHOWMAXIMIZED;
  13.   StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  14.   Appel := Nom_Complet_Navigateur;
  15.   Rep := Rep_Navigateur;
  16.   Application.Minimize;
  17.   Retour := CreateProcess(nil,
  18.                         PChar(Appel),
  19.                                          nil,
  20.                         nil,
  21.                         false,
  22.                         normal_priority_class,
  23.                         nil,
  24.                                         PChar(Rep),Startupinfo,ProcessInfo);
  25.   Application.Restore;
  26.   Application.MainForm.BringToFront;
  27.   if Retour <> false then
  28.         begin
  29.                 WaitforSingleObject(Processinfo.hProcess, infinite);
  30.                 CloseHandle(ProcessInfo.hProcess);
  31.         end
  32.   else
  33.         begin
  34.                 RaiseLastOSError;
  35.                 Erreur := GetLastError;
  36.         end;
  37. end;


 
 
Même le composant CoolTrayIcon n'arrive à rien. La fenêtre de mon appli se réduit (normal), le processus est appelé, mais j'ai la fenêtre de mon appli qui revient à son état normal !  
 
Qu'est-ce qui arrive ?
 
Merci, parce que là ça fait plusieurs jours que je bidouille pour rien... :( Je ne peux plus cacher mon appli, la réduire en icône ! C'est exactement comme si je faisais un ShellExecute. :pt1cable:  

Reply

Marsh Posté le 11-08-2011 à 21:53:52   

Reply

Marsh Posté le 17-09-2011 à 18:36:57    

Bon ca fait plus d'un mois que vous avez posté mais je réponds quand même au cas où: non createprocess() n'attends pas la fin de l'exécution du processus fils!!! (ou alors vous confondez avec une autre fonction!)
http://msdn.microsoft.com/en-us/li [...] 85%29.aspx

Citation :


Return value:
...
Note that the function returns before the process has finished initialization. If a required DLL cannot be located or fails to initialize, the process is terminated. To get the termination status of a process, call GetExitCodeProcess.


Il faut enchainer avec un waitforsingleobjet (je crois) sur le handle retourné pour attendre la fin du processus fils, si vous voulez attendre...


---------------
Seul Google le sait...
Reply

Marsh Posté le 17-09-2011 à 19:49:43    

breizhbugs a écrit :

Bon ca fait plus d'un mois que vous avez posté mais je réponds quand même au cas où: non createprocess() n'attends pas la fin de l'exécution du processus fils!!! (ou alors vous confondez avec une autre fonction!)
http://msdn.microsoft.com/en-us/li [...] 85%29.aspx

Citation :


Return value:
...
Note that the function returns before the process has finished initialization. If a required DLL cannot be located or fails to initialize, the process is terminated. To get the termination status of a process, call GetExitCodeProcess.


Il faut enchainer avec un waitforsingleobjet (je crois) sur le handle retourné pour attendre la fin du processus fils, si vous voulez attendre...


 
Merci :) Je vais tester çela. J'avais fini par remarquer que la réduction en icône cache bel et bien la fenêtre (sur mes autres applications) mes... sans quitter l'application elle-même, donc sans appel à un processus fils :heink:
 
Merci aussi pour l'URL ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed