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.