AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Maus bewegen und Klick simulieren in minimiertem Fenster

Maus bewegen und Klick simulieren in minimiertem Fenster

Ein Thema von TheThrust · begonnen am 30. Jan 2008 · letzter Beitrag vom 30. Jan 2008
Antwort Antwort
TheThrust

Registriert seit: 30. Jan 2008
19 Beiträge
 
#1

Maus bewegen und Klick simulieren in minimiertem Fenster

  Alt 30. Jan 2008, 18:35
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
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Maus bewegen und Klick simulieren in minimiertem Fenster

  Alt 30. Jan 2008, 19:34
Zitat von TheThrust:

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
Hallo, du kannst versuchen dem Control ein BM_CLICK oder ein WM LBUTTONDOWN / WM LBUTTONUP
zu senden. Dies, falls das Control ein Fenster Handle besitzt. Im Fall von IE
funktioniert das nicht, da die Felder, Buttons im IE keine Handles besitzen. Dort
musst du andere Wege gehen. Beispiele findest du im Forum.
Thomas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz