Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kann man die Maus durch Kommandos bewegen ? (https://www.delphipraxis.net/95504-kann-man-die-maus-durch-kommandos-bewegen.html)

LingNeu 7. Jul 2007 18:10


Kann man die Maus durch Kommandos bewegen ?
 
Liebe Delphifans,
Ich habe ein simples Zeichenprogramm über ein Imageobjekt für meine Nichte gemacht ,mit dem ich über die Maus einfache Symbole zeichnen kann.
Jetzt meine Frage:
gibt es eine Möglichkeit, die Mausbewegung und das Drücken der Maustaste zu simulieren (ich habe da zwar einige Artikel hier mit der Suche gefunden, aber es war nicht das passende dabei)?
Ich möchte einige Testsequenzen vorbelegen und dann ablaufen lassen, d.h. z.B. ein beliebiges Zeichenobjekt vorgeben. Meine kleine Nichte hätte dann die Möglichkeit, das nachzuzeichnen.
So ein Code würde sich auch für irgendwelche Werbezwecke anbieten.

Habe schon einiges probiert, ist mir aber leider nicht gelungen.

Die Ereignissprozedure OnMouseDown und OnMouseMove hat ja verschiedene Parameter, die ich übergeben müsste.
Da ich noch ein Newbie bin, hab ich natürlich einige Probleme.

procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

Vielleicht hat jemand von euch Lust, mir zu helfen.
vielen Dank für jede HIlfe

LingNeu

jfheins 7. Jul 2007 18:19

Re: Kann man die Maus durch Kommandos bewegen ?
 
Du kannst mit MSDN-Library durchsuchenSetCursorPos die Mausposition setzen und mit mouse_MSDN-Library durchsuchenevent einen Mausklick simulieren ;)

Namenloser 7. Jul 2007 18:49

Re: Kann man die Maus durch Kommandos bewegen ?
 
Hi,

wenn es nur um das Image geht, halte ich das direkte Aufrufen der Ereignisse ohne SetCursorpos usw. für sinnvoller. Das ist auch nicht schwer:
Delphi-Quellcode:
down := point(random(image.width), random(image.height));
move := point(random(image.width), random(image.height));
ImageMouseDown(self, mbLeft, ssLeft, down.x, down.y);
ImageMouseMove(self, ssLeft, move.x, move.y);
ImageMouseUp(self, mbLeft, ssLeft, move.x, move.y);
Der Code müsste eine beliebige Linie auf das Image zeichnen, wenn ich mich nicht irre (ungetestet).

LingNeu 7. Jul 2007 20:09

Re: Kann man die Maus durch Kommandos bewegen ?
 
@jfheins
vielen Dank für Deinen Hinweis!
Habe das mit der API noch nicht probiert und ich kenne das auch noch nicht. Aber irgendwann muss man das auch lernen.

@NamenLozer
ebenfalls vielen Dank für Deinen Code
sieht ja echt cool aus. Habe den Code mal in einem Buttonereignis eingegeben um es zu testen, leider kommt eine Meldung, das inkompatible Tpyen "TPoint und dynamic array" da sind.
Wie muss ich die beiden Variablen deklarieren ?
Wenn ich die beiden als array mit integer deklariere bekomme ich "inkompatible Typen "Array und TPoint" :cry:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
down: array of TPoints;
move: array of TPoints;
begin
down := point(random(image1.width), random(image1.height));
move := point(random(image1.width), random(image1.height));
ImageMouseDown(self, mbLeft, ssLeft, down.x, down.y);
ImageMouseMove(self, ssLeft, move.x, move.y);
ImageMouseUp(self, mbLeft, ssLeft, move.x, move.y);
end;
Besten Dank nochmals!
Lingneu

Dunkel 7. Jul 2007 21:21

Re: Kann man die Maus durch Kommandos bewegen ?
 
Lass mal das
Delphi-Quellcode:
array of
weg, dann sollte es eigentlich funktionieren.

Delphi-Quellcode:
var
down: TPoint;
move: TPoint;

LingNeu 7. Jul 2007 21:43

Re: Kann man die Maus durch Kommandos bewegen ?
 
@dunkel,
danke für den Tipp.
Leider habe ich

Inkompatible Typen 'TShiftState' und 'Enumeration'
bei ssLeft

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
down: TPoint;
move: TPoint;
begin
down := point(random(image1.width), random(image1.height));
move := point(random(image1.width), random(image1.height));
ImageMouseDown(self, mbLeft, ssLeft, down.x, down.y);
ImageMouseMove(self, ssLeft, move.x, move.y);
ImageMouseUp(self, mbLeft, ssLeft, move.x, move.y);
end;
ciao
LingNeu

bitsetter 7. Jul 2007 21:48

Re: Kann man die Maus durch Kommandos bewegen ?
 
Hi,

Delphi-Quellcode:
ImageMouseDown(self, mbLeft, [ssLeft], down.x, down.y);
ist es so besser?

LingNeu 7. Jul 2007 22:00

Re: Kann man die Maus durch Kommandos bewegen ?
 
hi bitsetter,
danke,jetzt habe ich keine Fehlermeldung mehr.
Allerdings wird nichts gezeichnet :roll:

ohje
ciao
LingNeu

Dunkel 7. Jul 2007 22:09

Re: Kann man die Maus durch Kommandos bewegen ?
 
Aber das Zeichnen, wenn Du die Mouse manuell bewegst & die Tasten drückst, funktioniert?

bitsetter 7. Jul 2007 22:10

Re: Kann man die Maus durch Kommandos bewegen ?
 
Hast du den Ereignissen onMouseDown und onMouseUp Code hinzugefügt?
Zum Beispiel so:
Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 image1.Canvas.MoveTo(x,y);
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  image1.Canvas.LineTo(x,y);
end;

LingNeu 7. Jul 2007 22:15

Re: Kann man die Maus durch Kommandos bewegen ?
 
hallo dunkel,
ja das normale Zeichnen geht einwandfrei.
Mit der linken Maustaste kann ich eine Stiftzeichnung machen sobald ich diese Taste drücke. Bei MouseUp hört das Zeichnen auf.
Ich habe festgestellt, das die Maus den Fokus auf dem Button weiter hat, obwohl die Maus sich ja bewegen müsste. Ob das Schuld daran ist, das die Maus sich nicht auf das Image bewegt?
ciao
LingNeu

LingNeu 7. Jul 2007 22:19

Re: Kann man die Maus durch Kommandos bewegen ?
 
hallo bitsetter,
ja natürlich habe ich das, sonst wäre der Code ...

ImageMouseDown(self, mbLeft, [ssLeft], down.x, down.y);
ImageMouseMove(self, [ssLeft], move.x, move.y);

wahrscheinlich nicht möglich.
Was könnte das sein ?
ciao
LingNeu

bitsetter 7. Jul 2007 22:22

Re: Kann man die Maus durch Kommandos bewegen ?
 
Der Cursor wird sich dadurch wohl nicht bewegen, es wird wohl nur der jeweilige Code ausgeführt.

bitsetter 8. Jul 2007 01:22

Re: Kann man die Maus durch Kommandos bewegen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Damit das nicht alles ganz umsonst war, habe ich einen einfachen Mausrecorder für das TImage geschrieben. Damit bewegt sich auch der Cursor und simuliert die zuvor aufgenommenen Mausaktionen am TImage.

EDIT: war leider Doppelpost

LingNeu 8. Jul 2007 10:30

Re: Kann man die Maus durch Kommandos bewegen ?
 
@bitsetter,
vielen Dank für deine unermüdliche Hilfe!
Das Programm ist ja echt toll. Vielleicht kann ich das so abändern, das ich über eine Anweisung die Zeichnungserstellung machen kann. Momentan muss ich ja noch selbst mit der Hand zeichnen. Schön wäre es, wenn man wie schon gesagt die Sache automatisch steuern könnte, dann könnte ich die Sache auch für mich persönlich gut als Werbesache verwenden.
Trotzdem nochmals danke
ciao
LingNeu

bitsetter 8. Jul 2007 12:31

Re: Kann man die Maus durch Kommandos bewegen ?
 
Zitat:

Zitat von LingNeu
Vielleicht kann ich das so abändern, das ich über eine Anweisung die Zeichnungserstellung machen kann. Momentan muss ich ja noch selbst mit der Hand zeichnen. Schön wäre es, wenn man wie schon gesagt die Sache automatisch steuern könnte, dann könnte ich die Sache auch für mich persönlich gut als Werbesache verwenden.

Hallo,

wie meinst du das genau, etwa das man verschiedene Objekte wie Rechtecke und Kreise hintereinander automatisch zeichnet? Könntest du das noch mal näher erläutern?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz