Ich habe einen Code geschrieben, den ich der Allgemeinheit zur Verfügung stellen möchte.
Es handelt sich hier um eine Procedure, die die Maus an eine bestimmte Stelle bewegt und dort eine beliebige, optionale Aktion ausführt. Das heißt: Ich kann mit diesem Code zum Beispiel die Maus zur Position 800,600 bewegen und, wenn ich will, dort ein Linksklick simulieren lassen. Zusätzlich kann ich bestimmen, mit welcher Geschwindigkeit sich die Maus bewegen soll. Außerdem kann ich noch festlegen, ob, während die Simulation läuft, Maus und Tastatur für den Benutzer gesperrt werden.
Code: Alles auswählen
Procedure maus(x, y, aktion1, aktion2, speed, block)
; © by AND-Software/AND51, 03/03/2006
BlockInput_(block And 1)
x=Abs(x)
y=Abs(y)
Protected a.l, b.l, sa.l, sb.l
Repeat
a=x-DesktopMouseX()
b=y-DesktopMouseY()
sa=1
sb=1
If a < 0
sa=-1
EndIf
If b < 0
sb=-1
EndIf
If DesktopMouseX() = x
sa=0
EndIf
If DesktopMouseY() = y
sb=0
EndIf
SetCursorPos_(DesktopMouseX()+sa, DesktopMouseY()+sb)
Delay(Abs(speed))
Until DesktopMouseX() = x And DesktopMouseY() = y
If aktion1 <> 0 : mouse_event_(aktion1, x, y, 0, 0) : EndIf
If aktion2 <> 0 : mouse_event_(aktion2, x, y, 0, 0) : EndIf
BlockInput_(#False)
ProcedureReturn #True
EndProcedure
maus(420, 60, #MOUSEEVENTF_LEFTDOWN, #MOUSEEVENTF_LEFTUP, 5, #True)
maus(x, y, aktion1, aktion2, speed, block)
Hier die Erklärung:
x: X Koordinate, an die die Maus bewegt werden soll
y: Y Koordinate, an die die Maus bewegt werden soll
aktion1: Erste, optionale Aktion, die ausgeführt wird, Beispiel: Linke Maustaste drücken
aktion2: Zweite, optionale Aktion, die Ausgeführt wird, Beispiel: Linke Maustaste loslassen (nicht vergessen!)
speed: Siehe Repeat-Schleife, wenn null, dann springt die Maus sofort zur angegebenen Stelle
block: Wenn #True, dann wird die Maus und die Tastatur (solange der Mauszeiger vom Programm bewegt wird) blockiert
ProcedureReturn: Diese Procedure gibt immer #True (1) zurück, nützlich für Repeat/Until Schleifen, damit man weiß, wann die Simulation zu Ende ist!
Soll die Maus nicht bewegt werden, sondern nur eine AKtion ausgeführt werden, dann setzte man für x einfach DesktopMouseX() und für y einfach DesktopMouseY() ein!
Soll keine Aktion ausgeführt werden, einfach für aktion1 und aktion2 eine null (0) einsetzen!
So ziemlich alles ist idiotensicher (oder, wie es in der PB-Hilfe heißt: "kugelsicher"), so kann speed auch negativ sein oder block eine positive oder negative Zahl, um das Blockieren einzuschalten. aktion1 und aktion2 sollten 0 (null) sein, wenn kein Klick getätigt werden soll, wenn also nur die Mausbewegung erwünscht ist. Sogar die Koordinaten können negativ sein; durch die Funktion Abs() wird immer der Betrag der Yahl genommen, also wenn ich aufrufe maus(-73, -678, ...), würde die Maus trotzdem zur Position 73,678 bewegt werden.
Bitte hier nachschauen, wenn weitere Informationen zu aktion1 und aktion2 gewünscht sind: http://msdn.microsoft.com/library/defau ... _event.asp
Bitte postet doch eure Meinung dazu. Dieser Code ist auch für Anfänger geeignet!