Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Positionen durch Action merken und anklicken (https://www.delphipraxis.net/111988-positionen-durch-action-merken-und-anklicken.html)

Darksniper 12. Apr 2008 21:59


Positionen durch Action merken und anklicken
 
hi

Wie sollman das hier verwirklichen:

Man drückt den Shortcut einer Action.
Dann verändert sich der Mauszeiger zu einem Kreuz.
Die Positionen der nächsten 2 Klicks werden dann in Variablen gespeichert.
Dann werden durch Klick auf einen Button die 2 Positionen angeklickt.

Das ist das erste mal dass ich mit Maussteuerung und Klicks arbeit also erklärt mir bitte ein bisschen.

Ein Danke schon im vorraus.

TonyR 12. Apr 2008 22:31

Re: Positionen durch Action merken und anklicken
 
Und was ist jetzt deine Frage?

Darksniper 12. Apr 2008 22:34

Re: Positionen durch Action merken und anklicken
 
Wie ich das machen soll.
Oder wie man das in einen Code bringen kann.

Fussball-Robby 12. Apr 2008 22:39

Re: Positionen durch Action merken und anklicken
 
Was hast du denn schon gemacht bzw. wo hakt es?

TonyR 12. Apr 2008 22:40

Re: Positionen durch Action merken und anklicken
 
Wo willst du die Klicks "aufnehmen" ?

Wenn es um ein Fenster deiner Anwendung oder gar nur um ein Image oder so geht, dann kannst du die X und Y Positionen von einem Klick bzw. der Mausbewegung im OnMouseDown bzw. OnMouseMove Ereignis erfahren.
(Die Variablen da heißen direkt X und Y)

Diese kannst du Global in einem Array abspeichern und später wieder abrufen.

Edit: Mausklicks simulieren dann mit
Delphi-Quellcode:
  mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
  mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);

Darksniper 12. Apr 2008 22:49

Re: Positionen durch Action merken und anklicken
 
Ich will die Klicks auf einer anderen Anwendung aufnehmen.
Diese Anwendung ist eine Vollbildanwendung. (so wie es Games sind)

Gemacht hab ich bis jetzt nur die Optik denn ich habe bis jetzt noch nicht mit mouse events gearbeitet.

TonyR 12. Apr 2008 22:56

Re: Positionen durch Action merken und anklicken
 
Dann würde ich mit einem Timer die Cursor-Positionen abfragen (ist bissl doof, aber MIR fällt nichts besseres ein).
Das tust du jedenfalls mit
Delphi-Quellcode:
mouse.CursorPos.X;
//und
mouse.CursorPos.Y
Wie du die Klicks simulierst hab ich ja schon geschrieben.

Darksniper 12. Apr 2008 22:58

Re: Positionen durch Action merken und anklicken
 
Und wie kann man auf Klick die Position rausfinden?

Und wie ändert man das aussehen der Maus?

TonyR 12. Apr 2008 23:03

Re: Positionen durch Action merken und anklicken
 
In einer Vollbildanwendung (also irgendeinem Spiel) kannst du denke ich den Mousecursor nicht verändern, weil das Spiel den ja selbst bestimmt.
Was mir da einfallen würde, wäre einen Screenshot deer Vollbild-Anwenung zu machen und dort die x und Y Werte zu rekonstruieren, aber bis jetzt weißt ja immernoch niemand was du eigentlich vorhast.

Also für mich wäre es interessasnt zu wissen, ob du nur die Koordinaten haben willst um die Klicks zu simulieren oder ob du den User unbedingt auswählen lassen willst, wo der Klick später simuliert werden soll.

Darksniper 12. Apr 2008 23:12

Re: Positionen durch Action merken und anklicken
 
Also ich will dass der User die Positionen bestimmt.

Dann später sollen auf diese Positionen per timer geklickt werden.

Ich hab das bestimmen der Positionen mal so versucht:

Delphi-Quellcode:
var X,Y:integer;
begin
X:=mouse.CursorPos.X;
Y:=mouse.CursorPos.Y;
Label1.caption:='X:'+inttostr(X)+' Y:'+inttostr(Y);
end;
Die ist eine Action die von einem Shortcut ausgelöst wird jedoch muss dafür die Anwendung angewählt sein.
Kann man da nicht machen wenn die Anwendung nicht angewählt ist (respektiv wenn man in dem Game ist?

Fussball-Robby 12. Apr 2008 23:20

Re: Positionen durch Action merken und anklicken
 
Such doch erstmal: Hier im Forum suchenSystemweiter HotKey, Hier im Forum suchenMausklick simulieren, [dp]Cursor ändern[/dp]

TonyR 12. Apr 2008 23:25

Re: Positionen durch Action merken und anklicken
 
Du kannst mit einem Timer auf einem geringen Interval prüfen, ob die Maustaste gedrückt ist, wenn ja, dann speicherst du die X und Y Position.
Delphi-Quellcode:
if getasynckeystate(vk_lbutton)<>0 then //speichern

Darksniper 13. Apr 2008 09:07

Re: Positionen durch Action merken und anklicken
 
Also ich habs jetzt fast aber wenn ich den Mausklick simulieren will dann springt die Maus immer nach recht unten in die Ecke und nicht an die Position an der sie klicken soll.
Wie kann ich das beheben?

So speichere ich die Positionen und füre dann die Klicks aus:
Delphi-Quellcode:
// wird beim Hotkey 1 ausgelöst
X1:=mouse.cursorpos.x;
Y1:=mouse.cursorpos.y;

// wird beim Hotkey 2 ausgelöst
X2:=mouse.cursorpos.x;
Y2:=mouse.cursorpos.y;

// wird beim Hotkey 3 ausgelöst
mouse_event(MOUSEEVENTF_LEFTDOWN, x1, y1, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x1, y1, 0, 0);
mouse_event(MOUSEEVENTF_LEFTDOWN, x2, y2, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x2, y2, 0, 0);

TonyR 13. Apr 2008 14:53

Re: Positionen durch Action merken und anklicken
 
Probier's folgendermaßen:
Delphi-Quellcode:
// wird beim Hotkey 1 ausgelöst
X1:=mouse.cursorpos.x;
Y1:=mouse.cursorpos.y;

// wird beim Hotkey 2 ausgelöst
X2:=mouse.cursorpos.x;
Y2:=mouse.cursorpos.y;

// wird beim Hotkey 3 ausgelöst

Mouse.CursorPos := Point(x1, y1);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

Mouse.CursorPos := Point(x2, y2);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Edit: Die X und Y Werte von mouse_event scheinen Delta-Größen zu sein!?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 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