Ganz einfach soll auf dem aktiven Fenster ein Button angeklickt werden (der Button liegt bei 2,2 also links oben). Mein Code funktioniert soweit, dass
Handle stimmt und auch in Rec stehen die richtigen Werte des aktiven Fensters. Nur leider, landet der Klick nicht auf dem Button, sondern bei Koordinaten 3,3 auf dem gesamten Bildschirm. Nicht mal in der Nähe des aktiven Fensters also. Was mach ich falsch?
Delphi-Quellcode:
function GetSysFocus : HWND;
var
ThreadID, CurrThrId: cardinal;
begin
Result := 0;
ThreadID := GetWindowThreadProcessID(GetForegroundWindow, nil);
CurrThrId := GetCurrentThreadId;
if ThreadID <> CurrThrId then
begin
if AttachThreadInput(ThreadID, CurrThrId, true) then
begin
Result := GetFocus;
AttachThreadInput(ThreadID, CurrThrId, false);
end;
end
else
Result := GetFocus;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
wnd: THandle;
Rec: TRect;
begin
wnd := GetSysFocus;
GetWindowRect(wnd, Rec);
showmessage(inttostr(rec.Left));
mouse_event(MOUSEEVENTF_MOVE Or MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_ABSOLUTE,Rec.Left+3,Rec.Top+3,0,0);
mouse_event(MOUSEEVENTF_MOVE Or MOUSEEVENTF_LEFTUP Or MOUSEEVENTF_ABSOLUTE,Rec.Left+3,Rec.Top+3,0,0);
end;