Voor het verkrijgen van een handle van extern programma gebruik ik extHwnd := getHandle('Naamloos - Kladblok');
Code:
function GetHandle (windowtitle: string): HWND;
var
h, TopWindow: HWND;
Dest: array[0..80] of char;
i: integer;
s: string;
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;
if length(s) > 0 then
begin
if (Pos(UpperCase(Windowtitle), UpperCase(s)) >= 1) then
begin
h:= HWND(WindowList[i]);
if IsWindow(h) then
result:= h
end
end;
inc(i)
end
finally
WindowList.Free;
end;
end;
Dat werkt prima. Maar omdat ik niet altijd de exacte titel weet gaat dit soms (vaak) fout. Daarom zou ik graag de bestandsnaam, in dit geval dus notepad.exe, hiervoor gebruiken.
Ik heb verschillende voorbeelden die op internet staan geprobeerd. Maar bij geen een krijg ik de goed handle. Deze handle wil ik gebruiken om het programma op de juiste positie te zetten met SetWindowPos
Ik zoek dus een manier om een betrouwbare handle van een extern programma te krijgen.
[edit]
Opgelost door het opvragen van het PID en deze om te zetten naar de handle.
Bookmarks