[Delphi] Fermer une application ouverte avec delphi [résolu]

Fermer une application ouverte avec delphi [résolu] [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 21-06-2002 à 14:11:28    

j'ouvre un exe avec delphi comme celà :
[pascal]Function TDB_Import_inventaire.WinExecAndWait32(const P_FileName: string): Integer;
var
  L_StartupInfo: TStartupInfo;
  L_ProcessInfo: TProcessInformation;
  L_code: Cardinal;
begin
FillChar(L_StartupInfo,Sizeof(L_StartupInfo),#0);
with L_StartupInfo do
  begin
  cb := Sizeof(L_StartupInfo);
  dwFlags := STARTF_USESHOWWINDOW;
  wShowWindow := 0;
  end;
if not CreateProcess( nil , PChar(P_FileName), nil, nil, False,
                      CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil,
                      L_StartupInfo, L_ProcessInfo)
then
  Result := -1
else
  begin
  WaitforSingleObject(L_ProcessInfo.hProcess, 10000);
  GetExitCodeProcess(L_ProcessInfo.hProcess, L_code);
  Result := Integer(L_code);
  end;
 
//PostMessage(L_ProcessInfo.hProcess,WM_close,0,0)
 
;
//TerminateProcess(L_ProcessInfo.hProcess,0);
CloseHandle(L_ProcessInfo.hProcess);
CloseHandle(L_ProcessInfo.hThread);
end;
[/pascal]
 
l'exe que je lance doit normalement récupéré des données sur un lecteur de code barre connecté sur un port com, s'il ne trouve rien il envoie un time out et se ferme si je le lance à la main
si je le lance avec delphi sous win2k j'ai le meme comportement => pas de pb
mais sous win98, a priori il s'en fiche total du timeout, donc le programme reste en fond, et moi je voudrais qu'il se ferme
j'ai essayé les 2 méthodes en commentaire (en les plaçant avant ou apres les closehandle au cas où) rien ne marche, le prog reste en tache de fond :/
vous avez une solution pour le fermer ?


Message édité par Aiua le 21-06-2002 à 14:49:54

---------------
"The pen is mightier than the sword if the sword is very short, and the pen is very sharp." TP. Mes Jeux. Mes Ventes. Groupe HFR sur PlayFire.
Reply

Marsh Posté le 21-06-2002 à 14:11:28   

Reply

Marsh Posté le 21-06-2002 à 14:26:16    

pourquoi ne pas lancer ton exe par la commande winexec(...)?

Reply

Marsh Posté le 21-06-2002 à 14:30:29    

est ce que ça me permet d'attendre que l'application ait fini de faire son boulot avec de passer à la suite ?


---------------
"The pen is mightier than the sword if the sword is very short, and the pen is very sharp." TP. Mes Jeux. Mes Ventes. Groupe HFR sur PlayFire.
Reply

Marsh Posté le 21-06-2002 à 14:49:33    

c'est bon j'ai trouvé, il fallait mettre :  
PostThreadMessage(L_ProcessInfo.dwThreadId,WM_QUIT,0,0);
avant les closehandle :)


---------------
"The pen is mightier than the sword if the sword is very short, and the pen is very sharp." TP. Mes Jeux. Mes Ventes. Groupe HFR sur PlayFire.
Reply

Sujets relatifs:

Leave a Replay

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