Inmiddels gelukt met een combinatie van de stukjes code.
Ik haal nu met EnumWindows een lijst op met alle handles.
Daar zit ook de handle tussen waar ik naar op zoek was.
Daarna vraag ik voor alle handles de GetWindowText en de GetClassName
Wanneer ik nu de naam van het programma tegenkom met als ClassName Tapplication dan heb ik de juiste handle gevonden
Code:
var
WindowList: TList;
function TForm1.GetHandle (windowtitle: string): HWND;
var
h, TopWindow: HWND;
Dest: array[0..256] of char;
i: integer;
s: string;
ClassName:string;
buf: array[0..255] of Char;
function getWindows(Handle: HWND; Info: Pointer): BOOL; stdcall;
begin
Result:= True;
WindowList.Add(Pointer(Handle));
end;
begin
result:= 0;
try
WindowList:= TList.Create;
TopWindow:= Application.Handle;
EnumWindows(@getWindows, Longint(@TopWindow));
i:= 0;
while (i < WindowList.Count) and (result = 0) do
begin
GetWindowText(HWND(WindowList[i]), Dest, sizeof(Dest) - 1);
s:= dest;
GetClassName(HWND(WindowList[i]), @buf, Length(buf));
ClassName:=buf;
Listbox1.Items.Add(inttostr( HWND(WindowList[i]))+' '+buf+ ' '+s);
if length(s) > 0 then
begin
if (Pos(UpperCase(Windowtitle), UpperCase(s)) >= 1) and (ClassName = 'TApplication') then
begin
h:= HWND(WindowList[i]);
if IsWindow(h) then
result:= h
end
end;
inc(i)
end
finally
WindowList.Free;
end;
end;
Bookmarks