Zitat von
ferby:
Ich weiß, wie die Fenster Klasse heißt, aber es gibt mehrer Fenster, mit der selben Klasse.
Ich kenne die ersten 5 Buchstaben des Fenster Titels, aber alle Zeichen dahinter sind Zufällig.
Hallo ferby,
In diesem Fall müsstest du eine eigene FindWindow Funktion schreiben, welche folgendes macht:
- Per GetWindow() wird durch alle Fenster iteriert
- Mit GetWindowText / GetClassName den Fenster Titel / Klassennamen ermittelt
- Überprüfung, ob der Fenster Titel / der Klassennamen mit den übergebenen Parametern
partiell ("match beginning") übereinstimmt.
Delphi-Quellcode:
function MyFindWindow(ClassName, WindowTitle: string): Boolean;
var
NextHandle: HWND;
WinTitle, WinClass: array[0..255] of Char;
begin
Result := 0;
NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST); // erstes Fenster ermitteln
while NextHandle > 0 do // falls Fenster gefunden
begin
// Fenster Titel, Klassennamen ermitteln
GetWindowText(NextHandle, WinTitle, SizeOf(WinTitle));
GetClassName(NextHandle, WinClass, SizeOf(WinClass));
// Überprüfung, ob Anfang der Strings übereinstimmen
if (Copy(WinTitle, 1, Length(WindowTitle)) = WindowTitle) and
(Copy(WinClass, 1, Length(ClassName)) = ClassName) then
begin
// Fenster gefunden, abbrechen
Result := NextHandle;
Break;
end
else
NextHandle := GetWindow(NextHandle, GW_HWNDNEXT); // nächstes Fenster ermitteln
end;
end;
Beispiel Aufruf:
MyFindWindow('Afx','Fenster Titel');