Taste gedrückt halten

01/24/2015 16:52 Moneypulation#1
Hallo,

da ich im "kleine Fragen" Sticky keine Antwort bekomme, hoffe ich, dass das hier mehr Personen lesen. Unzwar möchte ich einen Bot schreiben und muss dafür die Pfeiltasten gedrückt halten. Angeblich soll das ja funktionieren wenn man bei Send() ein "down" und zum abheben ein "up" dranhängt aber es funktioniert bei mir nicht. Es wird nur 1x die Pfeiltaste gesendeet, aber nicht gedrückt gehalten:

Send("{DOWN down}")
Sleep(3000)
Send("{DOWN up}")
01/24/2015 18:47 warfley#2
SendMessage aus der WinAPI

[Only registered and activated users can see links. Click Here To Register...]
01/24/2015 20:46 alpines#3
Vermutlich liegt es am Spiel wo du es testest. Wenn du das am Editor versuchst wirst du sehen das der 3 Sekunden lang den Cursor nach unten drückt.
01/24/2015 20:49 Moneypulation#4
Ne beim notepad hab ich es ausprobiert. Dort geht es auch nicht
01/24/2015 22:55 YatoDev#5
du machst es dann einfach falsch.

PostMessage gibts hier auch als udf
01/24/2015 23:10 Moneypulation#6
Quote:
Originally Posted by »FlutterShy™ View Post
du machst es dann einfach falsch.

PostMessage gibts hier auch als udf
Dann sag mir wie ichs richtig mache
01/25/2015 19:54 YatoDev#7
Quote:
Originally Posted by moneypulation View Post
Dann sag mir wie ichs richtig mache
Meine Glaskugel ist momentan kaputt. Ich erkenn da leider nichts
01/26/2015 10:31 Waller66#8
Nach ich im dem Artikel zu [Only registered and activated users can see links. Click Here To Register...] gestöbert hatte, ist mir eingefallen was als Bedingung gegeben sein muss. Also ich habs im Notepad getestet und ja geht. Der Fehler liegt bei dir, kann es sein das beim Debuggen/Ausführen das Script nicht die selben bzw niedriegere Rechte hat als der Spieleprozess ? Versuch ist es wert ansonsten fällt mir auch nichts mehr großartig ein. (Eigentlich Sinnlos wenn er es im Fenster ja ausführt, egal ob korrekt oder nicht) Ansonsten aus der Reihe der Befehle wüsste ich nur [Only registered and activated users can see links. Click Here To Register...] aber ich glaube damit kann man dieses gedrückt halten nicht realisieren.
01/26/2015 17:27 Moneypulation#9
Quote:
Originally Posted by Waller66 View Post
Nach ich im dem Artikel zu [Only registered and activated users can see links. Click Here To Register...] gestöbert hatte, ist mir eingefallen was als Bedingung gegeben sein muss. Also ich habs im Notepad getestet und ja geht. Der Fehler liegt bei dir, kann es sein das beim Debuggen/Ausführen das Script nicht die selben bzw niedriegere Rechte hat als der Spieleprozess ? Versuch ist es wert ansonsten fällt mir auch nichts mehr großartig ein. (Eigentlich Sinnlos wenn er es im Fenster ja ausführt, egal ob korrekt oder nicht) Ansonsten aus der Reihe der Befehle wüsste ich nur [Only registered and activated users can see links. Click Here To Register...] aber ich glaube damit kann man dieses gedrückt halten nicht realisieren.
Kannst du mir den Code zeigen mit dem es bei dir funktioniert? Ich habs auch mit #RequireAdmin versucht, an den Rechten liegt es glaub ich nicht
01/26/2015 17:52 lolkop#10
Quote:
Originally Posted by moneypulation View Post
Kannst du mir den Code zeigen mit dem es bei dir funktioniert? Ich habs auch mit #RequireAdmin versucht, an den Rechten liegt es glaub ich nicht
Compiliere das ganze einfach und starte die exe als Admin...

Send funktioniert in jedem Falle in Notepad. Sollte es bei dir Probleme geben liegt es definitv an dir.
Gründe hierfür könnte man nur erahnen. Sollte das Ausführen der compilierten exe als Admin nicht funktionieren, versuche mal eine Neuinstallation von Autoit.
Funktioniert es danach immernoch nicht, blockiert irgendetwas auf deinem System derartige Inputs (vielleicht ein Antivirus?)

PS:
Die meisten Anwendungen interessiert es nicht wann du Keydown und Keyup Events verwendest. Es wird ein Keydown registriert => die Taste wurde gedrückt. Keyup wird oftmals einfach ignoriert, da es reicht zu wissen, wann eine Taste gedrückt wurde (die Dauer ist dabei oftmals irrelevant).
Wiederholtes Senden der entsprechenden Taste könnte dein Problem also auch lösen...
01/30/2015 19:26 Moneypulation#11
Quote:
Originally Posted by lolkop View Post
Compiliere das ganze einfach und starte die exe als Admin...

Send funktioniert in jedem Falle in Notepad. Sollte es bei dir Probleme geben liegt es definitv an dir.
Gründe hierfür könnte man nur erahnen. Sollte das Ausführen der compilierten exe als Admin nicht funktionieren, versuche mal eine Neuinstallation von Autoit.
Funktioniert es danach immernoch nicht, blockiert irgendetwas auf deinem System derartige Inputs (vielleicht ein Antivirus?)

PS:
Die meisten Anwendungen interessiert es nicht wann du Keydown und Keyup Events verwendest. Es wird ein Keydown registriert => die Taste wurde gedrückt. Keyup wird oftmals einfach ignoriert, da es reicht zu wissen, wann eine Taste gedrückt wurde (die Dauer ist dabei oftmals irrelevant).
Wiederholtes Senden der entsprechenden Taste könnte dein Problem also auch lösen...
Am Antivirus liegts auch nicht. Wiederholtes Senden nützt in meinem Fall leider nicht. Gibts denn vielleicht eine andere Methode Tasten gedrückt zu halten außer mit Send() ?
02/12/2015 13:28 Clonko#12
Quote:
Originally Posted by moneypulation View Post
Hallo,

da ich im "kleine Fragen" Sticky keine Antwort bekomme, hoffe ich, dass das hier mehr Personen lesen. Unzwar möchte ich einen Bot schreiben und muss dafür die Pfeiltasten gedrückt halten. Angeblich soll das ja funktionieren wenn man bei Send() ein "down" und zum abheben ein "up" dranhängt aber es funktioniert bei mir nicht. Es wird nur 1x die Pfeiltaste gesendeet, aber nicht gedrückt gehalten:

Send("{DOWN down}")
Sleep(3000)
Send("{DOWN up}")
Liegt es nicht ganz einfach am Sleep? Denn wenn ich mich gerade nicht komplett irre, wird das script mit Sleep pausiert, somit also auch der Tastendruck.

Probier mal

Code:
Local $timer = TimerInit()
Local $delay = 3000

While 1
	If TimerDiff($timer) < $delay Then
		Send("{DOWN down}")
	Else
		Send("{DOWN up}")
	EndIf
WEnd
Nur zu Testzwecken ;)
02/12/2015 16:23 Moneypulation#13
Quote:
Originally Posted by Clonko View Post
Liegt es nicht ganz einfach am Sleep? Denn wenn ich mich gerade nicht komplett irre, wird das script mit Sleep pausiert, somit also auch der Tastendruck.

Probier mal

Code:
Local $timer = TimerInit()
Local $delay = 3000

While 1
	If TimerDiff($timer) < $delay Then
		Send("{DOWN down}")
	Else
		Send("{DOWN up}")
	EndIf
WEnd
Nur zu Testzwecken ;)

Ich hab das Problem mittlerweile gefunden. Vielleicht hilft es für andere, die mal das selbe Problem haben werden:

Man kann nicht per Taste einen Send down bzw. Send up Befehl aufrufen, da in dem Moment ja eine Taste gedrückt wird. Wenn man es so macht wie du oder z.B. per F-Tasten die Methode aufruft, funktioniert es