Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Nouvelle varoable système HANDLE_EXECUTE Ven 5 Mai 2017 - 19:04 | |
| J'aimerais bien avoir une nouvelle variable système, par exemple HANDLE_EXECUTE. Cette variable contiendrait toujours 0, mais serait chargée par la commande EXECUTE (et non EXECUTE_WAIT !) par le handle de la fenêtre principale du programme lancé. Pour ma part, en Delphi, je réalise cela comme suit: - Code:
-
var cmd: String; start: integer; StartUpInfo : TStartupInfo; ProcessInformation : TProcessInformation; MyHandle: THandle;
// fonction de service function GetHWndByPID(const hPID: THandle): THandle; type PEnumInfo = ^TEnumInfo; TEnumInfo = record ProcessID: DWORD; HWND: THandle; end;
function EnumWindowsProc(Wnd: DWORD; var EI: TEnumInfo): Bool; stdcall; var PID: DWORD; begin GetWindowThreadProcessID(Wnd, @PID); Result := (PID <> EI.ProcessID) or (not IsWindowVisible(WND)) or (not IsWindowEnabled(WND));
if not Result then EI.HWND := WND; //break on return FALSE end;
function FindMainWindow(PID: DWORD): DWORD; var EI: TEnumInfo; begin EI.ProcessID := PID; EI.HWND := 0; EnumWindows(@EnumWindowsProc, Integer(@EI)); Result := EI.HWND; end; begin if hPID<>0 then Result:=FindMainWindow(hPID) else Result:=0; end;
// lancer un process et récupérer son handle procedure StartProcess(cmd: string);
if CreateProcess(nil,pchar(cmd),nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInformation) then begin start := GetTickCount; while (GetTickCount - start) < 5000 do Application.ProcessMessages;
// MyHandle:=FindWindow(nil, 'PANORAMIC EDITOR'); MyHandle:=GetHWndByPID(ProcessInformation.dwProcessId); ... ici, j'ai le handle de la fenêtre principale, celui que j'aimerais retrouver dans HANDLE_EXECUTE ! end; ... end;
Voilà. Une variable de ce genre permettrait d'agir sur le process qu'on vient de lancer. | |
|
UltraVox
Nombre de messages : 40 Age : 54 Localisation : Ajaccio Date d'inscription : 05/06/2017
| Sujet: Re: Nouvelle varoable système HANDLE_EXECUTE Mar 6 Juin 2017 - 9:18 | |
| | |
|