
Zitat von
Fridolin Walther:
Wenn Du via
GetWindow das
Handle eines Deiner eigenen Fenster ermitteln möchtest, solltest Du das Fensterhandle ja haben (immerhin wurde es bei der Fenstererstellung ja zurückgeliefert und Du hast es hoffentlich gespeichert).
Ich kann damit nichts anfangen. Kannst Du das bitte genauer erläutern? Wenn ich mein Fensterhandle hätte, müsste ich das nicht mit GetWindow erst suchen.
Entschuldigung: Evtl. habe ich mich auch nicht vollständig/richtig ausgdrückt. Meine Anwendung hat kein(e) Fenster. Sie läuft einem Dienst ähnlich ohne Benutzerinteraktion im Hintergrund. Dabei ist es notwending, dass ich auf das Ende eines bestimmten Programms/Fensters warte (vgl.
diesen Thread). Um das zu prüfen, wollte ich mit GetWindow alle Fenster so durchsuchen:
Delphi-Quellcode:
function FindWindowByTitle(WindowTitle: string): Hwnd;
var
NextHandle: Hwnd;
NextTitle: array[0..255] of char;
begin
// Get the first window
NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
while NextHandle > 0 do
begin
// retrieve its text
GetWindowText(NextHandle, NextTitle, 255);
if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
begin
Result := NextHandle;
Exit;
end
else
// Get the next window
NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
end;
Result := 0;
end;
Mit Einbindung der
VCL klappt das wunderbar. Nur wie mache ich das ohne ein Fenster? Mit GetWindow(0, GW_HWNDFIRST); klappt es jedenfalls nicht.
Gruß, Alex