Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mausklick ausführen, ohne Mauszeigerbewegung. (https://www.delphipraxis.net/146006-mausklick-ausfuehren-ohne-mauszeigerbewegung.html)

Lostriga 12. Jan 2010 00:06


Mausklick ausführen, ohne Mauszeigerbewegung.
 
Aloa ihr´s,

war ja schon lange nicht mehr hier.

Ich habe mal ein kleines Problemchen, welches mir noch nicht zu lösen gelang.

Wie es der Titel dieses Thread schon aussagt, suche ich nach einer Möglichkeit
einen Mausklick auszuführen ohne das dafür der Mauszeiger bewegt werden muss.
Ich weis nicht ob das in Wunschdenken endet oder gar doch möglich ist,
denn in den Weiten des Internets habe ich nicht´s dazu gefunden.

Für´s 100% verständliche:
Sagen wir der Mauszeiger befindet sich an der Desktop Position x:300/y:700,
nun möchte ich einen Mausklick simulieren der auf der Position x:800/y:500 ausgeführt werden soll.
Mir ist bekannt, dass ich die Maus unteranderem per SetCursorPos an diesen Zielpunkt hinbewegen kann,
mein Versuch ist es aber nun, den Klick ohne jeglicher Bewegung des Cursor´s
an der angestrebten Koordinate auszuführen, woran ich derzeit allerdings scheiterte.


Über PostMessage und Mouse_Event bin ich zu keinem Ergebnis gekommen,
kennt da einer von euch vielleicht eine Möglichkeit?, oder bleibt es doch nur eine Vorstellung.


Mit freundlichem Gruß

Lostriga

s.h.a.r.k 12. Jan 2010 00:11

Re: Mausklick ausführen, ohne Mauszeigerbewegung.
 
Du willst also nur an irgendeine bestimmte Stelle klicken und nicht auf einen Button der dergleichen?

omata 12. Jan 2010 00:16

Re: Mausklick ausführen, ohne Mauszeigerbewegung.
 
Was spricht gegen folgendes?
Delphi-Quellcode:
procedure TForm.MakeMouseClick(AP: TPoint);
var P:TPoint;
begin
  if GetCursorPos(P) then begin
    SetCursorPos(AP.X, AP.Y);
    Mouse_Event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    Mouse_Event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    SetCursorPos(P.X, P.Y);
  end;
end;

Lostriga 12. Jan 2010 00:31

Re: Mausklick ausführen, ohne Mauszeigerbewegung.
 
Aloa,

danke für die raschen Antworten.

@ s.h.a.r.k
Ja ich möchte einfach einen Mausklick an einer bestimmten Position ausführen,
das halt ohne den Cursor zu bewegen.

@ omata
Deine eventuelle Lösung sieht interessant aus,
doch leider kann ich grad nicht´s mit dem (AP: TPoint) in der Procedure anfangen.
Wärst du so lieb und würdest das mit etwas mehr Quelltext erklären?


Mit freundlichem Gruß

Lostriga

omata 12. Jan 2010 00:34

Re: Mausklick ausführen, ohne Mauszeigerbewegung.
 
Ok...

Aufruf:
Delphi-Quellcode:
var P:TPoint;
begin
  P.X:=100;
  P.Y:=100;
  MakeMouseClick(P);
end;

Lostriga 12. Jan 2010 00:52

Re: Mausklick ausführen, ohne Mauszeigerbewegung.
 
Aloa,

ich weis nicht, aber ich glaube ich steh auf´m Kopf.

Das sagt mir nun dennoch nichts, es ist dieses direkte (AP: TPoint),
welches in der Procedure steht womit ich gerade nicht klar komme.

Bei mir kommt halt immer ein (Sender: TObject), mit eventuellem var, jenachdem welches Ereignis halt.
Ich komme grad halt nicht auf das (AP: TPoint), weist was ich meine?, was hast du da benutzt?


Mit freundlichem Gruß

Lostriga

omata 12. Jan 2010 00:54

Re: Mausklick ausführen, ohne Mauszeigerbewegung.
 
Ne, kann deine Probleme nicht nachvollziehen.

Versuche es deshalb mal so, in der Hoffnung, dass dir das besser gefällt:
Delphi-Quellcode:
procedure TForm.MakeMouseClick(X, Y:integer);
var P:TPoint;
begin
  if GetCursorPos(P) then begin
    SetCursorPos(X, Y);
    Mouse_Event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    Mouse_Event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    SetCursorPos(P.X, P.Y);
  end;
end;
Edit: Du must doch irgendwo diese Routine Aufrufen wollen? Wo kommen die Koordinaten her, an denen du den Mausklick durchführen möchtest?

s.h.a.r.k 12. Jan 2010 01:01

Re: Mausklick ausführen, ohne Mauszeigerbewegung.
 
Kurz zur Klärung: Dieses AP: TPoint ist der Zielpunkt, an dem geklickt werden soll. Du musst doch irgendwoher diesen Punkt haben. Nun musst halt entweder eine Methode schreiben, was ich auf jeden Fall rate, oder du packst es irgendwie in eine Klasse.

omata 12. Jan 2010 01:10

Re: Mausklick ausführen, ohne Mauszeigerbewegung.
 
MakeMouseClick ist doch eine eigene Methode.

s.h.a.r.k 12. Jan 2010 01:19

Re: Mausklick ausführen, ohne Mauszeigerbewegung.
 
Mein Kommentar war für Lostriga. Ich denke er hat noch nicht ganz verstanden, wo der Punkt herkommt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 Uhr.
Seite 1 von 3  1 23      

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