| Autor |
Beitrag |
Snippy
      
Beiträge: 61
|
Verfasst: Mi 07.05.03 21:50
Hi!
Ich weiß da klingt sinnlos, aber ich brauch das
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!
THX
_________________ Carpe Diem!
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: 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 
      
Beiträge: 61
|
Verfasst: 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
      
Beiträge: 64
|
Verfasst: Do 08.05.03 19:44
hi Snippy,
hatte gerade langeweile
Probier mal das hier:
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;
X:= 50; Y:= 50; GetCursorPos(CurrentPos);
If CurrentPos.X > X Then SetCursorPos(CurrentPos.X-1, CurrentPos.Y) Else SetCursorPos(CurrentPos.X+1, CurrentPos.Y); GetCursorPos(CurrentPos); If CurrentPos.Y > Y Then SetCursorPos(CurrentPos.X, CurrentPos.Y-1) Else SetCursorPos(CurrentPos.X, CurrentPos.Y+1);
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 Christian S.: Code- durch Delphi-Tags ersetzt
_________________ MfG Blackout
|
|
Snippy 
      
Beiträge: 61
|
Verfasst: Do 08.05.03 20:04
h3h3!
So weit war ich auch schon
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
      
Beiträge: 64
|
Verfasst: 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
Und wennde das ganze schneller haben willst änder den Intervall auf 5 oder 1.
_________________ MfG Blackout
|
|
Snippy 
      
Beiträge: 61
|
Verfasst: 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
Das is noch das Problem!
_________________ Carpe Diem!
|
|
Blackout
      
Beiträge: 64
|
Verfasst: Do 08.05.03 21:43
Na dann schau mal bei Torry nach da gibts Timer die auch Millisekunden vertragen
_________________ MfG Blackout
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Do 08.05.03 22:01
Dann solltest du das so machen:
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
      
Beiträge: 64
|
Verfasst: 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 
      
Beiträge: 61
|
Verfasst: 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
Und zur Torrysite!
Die Timer da, die in Frage kommen würden funzen alle ned 
_________________ Carpe Diem!
|
|
Alni
      
Beiträge: 205
Win 2000, XP, SuSe, Debian
D5 Prof, D7 Prof, Kylix
|
Verfasst: 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:
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
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 UGrohne: Code- durch Delphi-Tags ersetzt und Quote-Tag korrigiert.
_________________ MfG Alex
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Mo 12.05.03 16:32
_________________ Hasta La Victoria Siempre
|
|
boz
Hält's aus hier
Beiträge: 1
Windows XP Professionel
Delphi 7 Personal
|
Verfasst: 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!
boz
_________________ Procedure Meine.Signatur (Sender: TObject); var Nachricht: String;
Begin Nachricht:='Keine Ahnung was'; End;
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 20.02.06 19:13
Hallo und  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.
|
|