![]() |
Fensterhandle zu einer Exe - auch wenn das Fenster minimiert ist
Hallo Zusammen,
ich habe momentan ein Problem mit dem Ermitteln des Fensterhandle zu einer Exe. Auf Basis der vielen Beispiele in Foren habe ich mir in Delphi 2007 die unten stehende Function erstellt, welche mir die Handles zu allen Hauptfenstern einer angegebenen Exe ermittelt, auch wenn diese mehrfach läuft. Nur gibt es eine "Lücke". Wenn ich z.B. alle Fenster zu "winword.exe" suche, aber Word gerade minimiert in der Taskleiste liegt, so finde ich kein Handle. Kann mir bitte jemand erklären warum und wie ich diese Lücke schliessen kann?
Delphi-Quellcode:
type THandleArray = array of HWND function GetWindowHandlesByExeName(const AExeName: string): THandleArray; type PParam = ^TParam; TParam = record ProcID : THandle; Res : THandleArray; end; var SnapShot : THandle; p : TProcessEntry32; ProcessHandle : THandle; Rec : TParam; function MyEnumWindowProc(AHandle: THandle; _LParam: LParam): LongBool; stdcall; var ProcessID : THandle; PHandle : THandle; i : Integer; g : Boolean; begin with PParam(_LParam)^ do begin ProcessID := 0; GetWindowThreadProcessID(AHandle, ProcessID); Result := not (ProcessID = ProcID); if not Result then begin pHandle := GetParent(AHandle); while pHandle <> 0 do begin AHandle := PHandle; pHandle := GetParent(AHandle); end; g := False; for i := low(Res) to high(Res) do if Res[i] = AHandle then g := True; if not g then begin SetLength(Res, Length(Res) + 1); Res[Length(Res)-1] := AHandle; end; end; end; end; begin SetLength(Rec.Res, 0); ProcessHandle := 0; p.dwSize := SizeOf(p); SnapShot := CreateToolhelp32Snapshot(TH32CS_SnapProcess, 0); try if Process32First(SnapShot, p) then repeat if AnsiLowerCase(AExeName) = AnsiLowerCase(p.szExeFile) then ProcessHandle := p.th32ProcessID; Rec.ProcID := ProcessHandle; EnumWindows(@MyEnumWindowProc, Integer(@Rec)); until not Process32Next(SnapShot, p); Result := Rec.Res; finally CloseHandle(SnapShot); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz