Delphi-PRAXiS
Seite 1 von 2  1 2      

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 17: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 17: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 17: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 19: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 20: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 20: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 20: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 21: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 21: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 21: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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 Uhr.
Seite 1 von 2  1 2      

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