wenn du die exakte fenstercaption wüsstest könntest du mit
FindWindow(nil, 'exakte fenstercaption')
arbeiten was dir dann das
handle zurück geben würde. so musst du die caption selbst prüfen und alle fenster durchgehen. Entweder mit EnumWindows oder mit FindWindow und "GW_HWNDNEXT". Hier eine Procedure die das macht was du willst:
Delphi-Quellcode:
function GetHandleByCaption(ACaption: String): Cardinal;
var LHandle, LGiveback: Cardinal;
LPChar: PChar;
begin
LPChar := StrAlloc(256);
LGiveback := 0;
LHandle := FindWindow(nil, nil);
while (LHandle <> 0) and (LGiveback = 0) do
begin
GetWindowText(LHandle, LPChar, 255);
if RightStr(string(LPChar), length(ACaption)) = ACaption then
LGiveback := LHandle;
LHandle := GetWindow(LHandle, GW_HWNDNEXT);
end;
StrDispose(LPChar);
result := LGiveback;
end;
beispielaufruf:
Delphi-Quellcode:
var LHandle: Cardinal;
begin
LHandle := GetHandleByCaption('Mozilla Thunderbird');