Hallo ihr fleißigen Delphianer
Ich lese schon seit mehreren Wochen hier im Forum und habe mir bisher jede Frage durch die Suchfunktion beantworten können.
Jetzt habe ich allerdings ein Problem, auf das ich auch nach längeren Suchen keine Antwort finden konnte, ich hoffe ihr könnt mir helfen:
Ich möchte in einem minimierten Fenster verschiedene Sachen ausführen, wie z.B einen Mausklick an bestimmten Positionen.
Einen Text an das Notepad zu senden hat bei mir bereits auf folgende Weise funktioniert:
Delphi-Quellcode:
var
wnd, wnde:Hwnd;
s : string;
...
s := 'beliebige Zeichen';
wnd:=findwindow('Notepad', nil);
if wnd<>0 then
begin
wnde := FindWindowEx(wnd,0,'Edit',nil);
if wnde<>0 then
begin
For i := 1 to Length(s) do
begin
SendMessage(wnde, WM_CHAR, Word(s[i]), 0);
showmessage(s[i]);
end;
end;
end;
Dieser Code funktionierte einwandfrei, jedoch sieht das ganz anders aus, wenn ich zum bespiel den Intenet explorer öffne und per simuliertem Mausklick auf den 'Suchen' Butten bei Google drücken will. Hierfür habe ich folgendes versucht:
Delphi-Quellcode:
var
wnd : Hwnd;
Pt : TPoint;
...
Pt.X := 780;
Pt.Y := 260;
wnd:=findwindow('IEFrame', nil);
if wnd<>0 then
begin
Pt := ClientToScreen(Pt);
Pt.x := Round(Pt.x * (65535 / Screen.Width)) ;
Pt.y := Round(Pt.y * (65535 / Screen.Height)) ;
sendmessage(wnd,WM_MouseMove,Pt.X,Pt.Y); // Ich weiß nicht, ob diese Zeile nötig ist, ohne sie funktioniert es genausowenig
sendmessage(wnd,WM_LButtonDown,Pt.X,Pt.Y);
sendmessage(wnd,WM_LButtonUp,Pt.X,Pt.Y);
end;
Das funktionier nicht, aber folgendes funktioniert bei maximiertem Fenster:
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0) ;;
Meine Frage ist nun:
Kann ich in einem minimierten Fenster Mausklicks simulieren ohne, dass sich der "echte" Mauszeiger bewegt?
Vielen Dank schon mal im Vorraus