Autor Beitrag
Snippy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Mi 07.05.03 21:50 
Hi!

Ich weiß da klingt sinnlos, aber ich brauch das :D

Wie kann ich ein Programm schreiben, bei dem die Maus über den gesamten Bildschirm oder meinetwegen auch eine Strecke X in der Geschwindigkeit Y bewegt wird!

Man soll das per Tastendruck an- und ausschalten können!

Hoffe ihr könnt mir da helfen, aber ihr könnt ja sonst auch immer alles! :wink:

THX

_________________
Carpe Diem!
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Do 08.05.03 12:28 
Versuchs mal mit folgendem:

- Die Eigenschaft Interval von einem Timer
- Die Funktion GetCursorPos
- Die Fukntion SetCursorPos

Hilfe zu allem müßte Delphi dir geben können oder im Forum ([url=www.delphi-forum.de/...hlight=getcursorpos]GetCursorPos / SetCursorPos[/url])

_________________
Hasta La Victoria Siempre
Snippy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Do 08.05.03 19:18 
THX!

Das funktioniert doch schonmal, ABER ich hab noch ein kleines Problem:

Entweder muss ich das Timerinterval unter 1 bekommen oder der Cursor muss sich in einer flüssigen Bewegung zu der Zielcoordinate bewegen!

_________________
Carpe Diem!
Blackout
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 64



BeitragVerfasst: Do 08.05.03 19:44 
hi Snippy,
hatte gerade langeweile :D

Probier mal das hier:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
Procedure TForm1.Timer1Timer(Sender: TObject);

Var
  CurrentPos: TPoint;
  X, Y: Integer;

Begin

   Timer1.Interval:= 10;

   // Deine Koordinaten
   X:= 50;
   Y:= 50;
   
   GetCursorPos(CurrentPos);

   // X-Achse
   If CurrentPos.X > X Then SetCursorPos(CurrentPos.X-1, CurrentPos.Y) Else SetCursorPos(CurrentPos.X+1, CurrentPos.Y);
   GetCursorPos(CurrentPos);
   
   // Y-Achse
   If CurrentPos.Y > Y Then SetCursorPos(CurrentPos.X, CurrentPos.Y-1) Else SetCursorPos(CurrentPos.X, CurrentPos.Y+1);


   // Wenn deine Koordinaten erreicht sind stoppen
   If (CurrentPos.X= X) AND (CurrentPos.Y= Y) Then Timer1.Enabled:= False;

End;


Ist vielleicht nicht sehr elegant doch der Cursor bewegt sich von Geisterhand zur X & Y Koordinate

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt

_________________
MfG Blackout
Snippy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Do 08.05.03 20:04 
h3h3!

So weit war ich auch schon :wink:

Aber dennoch danke für die Mühe!

Ich muss es jetzt noch hinbekommen, dass ich das Timerinterval unter 1 bekomme oder, dass der Cursor sich zur Zielcoordinate hinbewegt und nicht hinspringt!

_________________
Carpe Diem!
Blackout
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 64



BeitragVerfasst: Do 08.05.03 20:18 
Snippy hat folgendes geschrieben:
Ich muss es jetzt noch hinbekommen, dass ich das Timerinterval unter 1 bekomme oder, dass der Cursor sich zur Zielcoordinate hinbewegt und nicht hinspringt!


Hast du meinen Code ausprobiert?
Der Cursor Springt nicht er gleitet :D

Und wennde das ganze schneller haben willst änder den Intervall auf 5 oder 1.

_________________
MfG Blackout
Snippy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Do 08.05.03 21:28 
Jojo schon klar!

Aber ein interval von 1 ist nur noch zu langsam!
um es schneller zu bekommen bleibt die einzige Möglichkeit die Zielkoordinaten weiter auseinander zu machen!

Und dann springt er doch :wink:

Das is noch das Problem!

_________________
Carpe Diem!
Blackout
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 64



BeitragVerfasst: Do 08.05.03 21:43 
Na dann schau mal bei Torry nach da gibts Timer die auch Millisekunden vertragen

_________________
MfG Blackout
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Do 08.05.03 22:01 
Dann solltest du das so machen:

ausblenden Quelltext
1:
2:
Repeat Setze Cursor um 10 nach rechts
Until Cursor auf der Koordinate ist


Geht das denn nicht? Dann geht er solange um 10 nach rechts, bis er da ist, wo er hin soll und springt nicht gleich.

_________________
Hasta La Victoria Siempre
Blackout
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 64



BeitragVerfasst: Do 08.05.03 22:57 
@Terra23
das wäre zu schnell man müsste dort eine Sleep oder Delay Funktion einbauen.

_________________
MfG Blackout
Snippy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Sa 10.05.03 11:50 
Ich glaube ihr versteht mein Problem nicht!

Ich hab das so gemacht wie du, aber dann ist das auch mit 1ms Timer zu langsam :D

Und zur Torrysite!
Die Timer da, die in Frage kommen würden funzen alle ned :(

_________________
Carpe Diem!
Alni
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 205

Win 2000, XP, SuSe, Debian
D5 Prof, D7 Prof, Kylix
BeitragVerfasst: Sa 10.05.03 16:46 
Er hat dich schon richtig verstanden. Ich glaube er meinte du solltest das hier:

Terra23 hat folgendes geschrieben:
Dann solltest du das so machen:

ausblenden Delphi-Quelltext
1:
2:
Repeat Setze Cursor um 10 nach rechts
Until Cursor auf der Koordinate ist


anstatt eines Timers verwenden und (wie Blackout gesagt) mit einem sleep in der repeat-schleife deine Geschwindigkeit steuern.

Aber ich glaube nicht, dass das einen Unterschied zum Timer macht. Außerdem hab ich das auch gerade ausprobiert und mit 10er Schritten und 1ms springt der Zeiger doch nicht, zumindest nimmt man es nicht mehr wahr. Du kannst doch damit wunderbar deine Geschwindigkeit regeln.

Aber wenn du wirklich keine größeren Schritte als 1 machen willst dann setzte das Timerinterval auf 0, und versuche mit Schleifen deine Geschwindigkeit zu regeln. Also einfach ein
ausblenden Delphi-Quelltext
1:
while i<100000 do inc(i);					

oder etwas ähnliches in die Timerschleife, und die 100000 entsprechend anpassen bis deine Geschwindigkeit passt.

Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt und Quote-Tag korrigiert.

_________________
MfG Alex
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mo 12.05.03 16:32 
Also in meinem Memory habe ich das so:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
Var U, V: TDateTime;

begin
U:=Now;
Repeat V:=Now:
Until V>U+(1/(24*60*60))*2;
end;


Ich nutze daß, um die Karten, die geklickt wurden, eine kurze Zeit sichtbar zu lassen. Du mußt dann lediglich einen Wert frößer oder kleiner machen; ich weiß nur nicht mehr, welchen. :nixweiss: :autsch: [/code]

Moderiert von user profile iconUGrohne: Beitragsformatierung überarbeitet.

_________________
Hasta La Victoria Siempre
boz
Hält's aus hier
Beiträge: 1

Windows XP Professionel
Delphi 7 Personal
BeitragVerfasst: Mo 20.02.06 19:09 
Hallo,

ich bin irgentwie für alles zu blöde. Glaub ich.

Ich krieg immer eine Fehlermeldung, dass er nicht weiß, was Timer1 sein soll. Ich hab wohl wieder was Grundlegendes vergessen!
Aber ich schreib noch nicht grad lange Delphi und bin auch erst 13. Daher bitte nicht so ärgern, wenn es etwas sehr sehr einfaches ist.

Vielleicht wisst ihr ja, was. Ist auch mein erster richtiger Timer!
:?: :?: :?:
:autsch: :flehan: :schmoll:

boz

_________________
Procedure Meine.Signatur (Sender: TObject); var Nachricht: String;
Begin Nachricht:='Keine Ahnung was'; End;
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 20.02.06 19:13 
Hallo und :welcome: in der Entwickler-Ecke!

Bei Delphi findest du unter "System" ein Symbol, das wie eine Uhr aussieht. Das packst du genauso auf deine Form, wie du es auch mit einem Button machst. Das ist die Timerkomponente, und wenn du sonst noch keinen Timer auf der Form hast (und davon gehe ich mal aus ;-)), dann hat dieser Timer den Namen Timer1 und dein Problem sollte behoben sein.

_________________
We are, we were and will not be.