Hallo, wie einige wissen arbeite ich zurzeit an meinen TQ Farm Bot.
Der eigentliche Bot ist fertig, doch nun will ich auch das fenster minimieren wollen, damit ich nebei auch noch andere Games zocken/Internet surfen kann.
Nur mein problem: Irgendwie geht gar nix.
Hab mir mal nen kleinen testscript angelegt um damit zu üben.
PHP Code:
$client = ("Guild Wars")
;Bisschen zeit lassen, damit ich GW öffnn kann sleep(8000)
;Test Script beginnen WinSetState($client, "", @SW_HIDE) ;Fenster verkleinern sleep(1000) ControlSend($client, "", "", "o", 1) ;In dem prozess "Guild Wars" o drücken ControlSend($client, "", "", "{Space}", 1) ;" Leertaste drücken sleep (12000) WinSetState($client, "", @SW_SHOW ); fenster wieder vergrößern um Ergebnis zu überprüfen
Also, das verkleinern und vergrößern geht. Aber die Tastendrücke funktionieren gar nicht. Weder wird O noch leer gedrückt. Das einzige was offen war, war die gruppensuche.
Und dann nochwas. Wenn es mal funktioniert, kann ich Controlsend dann überall in meinen jetigen Code einfügen? Also aus
ControlClick($client, "", "", "left", 1, 827, 545) ist etwas buggy leider du solltest da mal nach _MouseClickPlus suchen damit kannst du alles ansprechen und klicken
Gut, die Texteingaben hab ich. Nur da ControlClick nicht richtig geht, hab ich mal bischen gegoogelt und bin auf den Link gestoßen.
Die dll hab ich runtergeladen und wollte sie gleichmal testen. Nur leider komm ich mit dem Aufruf mit dll nicht wirklich klar. kann mir jmd helfen pls?
Allerdings erzeugt ControlSend nach einiger Zeit einen Stackoverflow, was zu Problemen (sehr nervig!) mit der Shift-Taste führt.
Darum empfehle ich dir meine Funktion dafür zu verwenden.
Code:
#include <WindowsConstants.au3>
; #FUNCTION# ====================================================================================================================
; Name...........: SimulKey
; Description ...: Simulate a Key-Send to a specified handle in the Background
; Author ........: Felix Lehmann
; Modified.......: If you modify this Script, please enter your name here
; Remarks .......: -
; Related .......: -
; Parameters ....: $hwnd = Specified Window to Send to
; ...............: $key = Key or String to Send (If String $string have to be enabled [see $string])
; ...............: $string = Set this to 1 If your "$key" is a string
; ...............: $state = Set this to 'up' or 'down' if u want a special event | Default is press the Key 1 Time
; ...............: $delay = The delay to hold the key down
; Return Values .: 1 = Done | -1 = Couldn't load user32.dll
; Link ..........; -
; ===============================================================================================================================
Func SimulKey($hWnd, $key, $string = 0, $state = 'skip', $delay = 10)
;//Open DLL (user32)
$user32 = DllOpen('user32.dll')
If $user32 = -1 Then
SetError(-1, 1, -1)
EndIf
;//Handle Special Keys
Switch StringLower($key)
Case 'enter'
$WM_ENTER = 0x0d
$dCall = DllCall($user32, 'int', "MapVirtualKey", 'int', $WM_ENTER, 'int', 0)
$lParam = BitOR(BitShift($dCall[0], -16), 1)
Case 'space'
$WM_SPACE = 0x20
$dCall = DllCall($user32, 'int', "MapVirtualKey", 'int', $WM_SPACE, 'int', 0)
$lParam = BitOR(BitShift($dCall[0], -16), 1)
Case 'tab'
$WM_TAB = 0x09
$dCall = DllCall($user32, 'int', "MapVirtualKey", 'int', $WM_TAB, 'int', 0)
$lParam = BitOR(BitShift($dCall[0], -16), 1)
;//Handle Standard Keys
Case Else
;//Stringmode 1
If $string = 1 Then
$split = StringSplit($key, "")
For $ctn = 1 To $split[0]
$split[$ctn] = Asc(StringLower($split[$ctn]))
Next
For $ctn = 1 To $split[0]
$dCall = DllCall($user32, 'int', "VkKeyScan", 'int', $split[$ctn])
$lParamAsc = DllCall($user32, 'int', "MapVirtualKey", 'int', $dCall[0], 'int', 0)
$lParam = BitOR(BitShift($lParamAsc[0], -16), 1)
$lUpParam = BitOR($lParam, 0xC0000000)
DllCall($user32, 'int', "PostMessage", 'hwnd', $hWnd, 'int', $WM_KEYDOWN, 'int', $dCall[0], 'int', $lParam)
Sleep($delay)
DllCall($user32, 'int', "PostMessage", 'hwnd', $hWnd, 'int', $WM_KEYUP, 'int', $dCall[0], 'int', $lUpParam)
Sleep(10)
Next
;//Stringmode 0
ElseIf $string = 0 Then
$key = Asc(StringLower($key))
$dCall = DllCall($user32, 'int', "VkKeyScan", 'int', $key)
$lParamAsc = DllCall($user32, 'int', "MapVirtualKey", 'int', $dCall[0], 'int', 0)
$lParam = BitOR(BitShift($lParamAsc[0], -16), 1)
EndIf
EndSwitch
$lUpParam = BitOR($lParam, 0xC0000000)
If $string = 0 Then
Switch StringLower($state)
Case 'skip'
DllCall($user32, 'int', "PostMessage", 'hwnd', $hWnd, 'int', $WM_KEYDOWN, 'int', $dCall[0], 'int', $lParam)
Sleep($delay)
DllCall($user32, 'int', "PostMessage", 'hwnd', $hWnd, 'int', $WM_KEYUP, 'int', $dCall[0], 'int', $lUpParam)
Case 'down'
DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", $WM_KEYDOWN, "int", $dCall[0], "int", $lParam)
Case 'up'
DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", $WM_KEYUP, "int", $dCall[0], "int", $lParam)
EndSwitch
EndIf
DllClose($user32)
Return 1
EndFunc ;==>SimulKey
Und noch ein passendes Beispiel zur verwendung wie du das ganze von oben mit Simulkey lösen kannst.
Wieso funzt ControlSend & _KeySend nicht? aber Send ..^^? 03/09/2011 - AutoIt - 10 Replies Ich bin relativ neu in autoit ^^ also noch ein "noob"
aber ich wollte ein einfachen bot machen der "TAB" drückt (damit wählt man im spiel das monster aus) dann "xx" ms das monster attackd undso weiter... wenn ich send benutzte funzt das soweit auch aber wenn ich ControlSend benutze macht er einfach nix ... habe mich mal bissl umgeschaut und habe die func _KeySend gefunden damit funzt es auch nicht hier mein code ... ich weiß ist unübersichtlich und noobig :p
Mein "Bot" -
#include...
Auto Login mit Control Send 09/14/2010 - AutoIt - 8 Replies Hi
Ich wollte mich mal ein wenig an die Befehle ControlSend, ControlClick etc. herantasten. Ich hab nun mal ein Script geschrieben, das mich automatisch einloggen soll wenn das Guild Wars Fenster existiert. Leider passiert einfach gar nichts... Wollte mal fragen was das Problem sein könnte.
Hier der Code:
$hWnd= "Guild Wars"
WinWait ("$hWnd")
Sleep (5000)
ControlSend($hWnd,"",""," ;
PASSWORT")
Sleep (1000, 2000)
Control Send... 05/07/2010 - AutoIt - 7 Replies Hi zusammen,
ich möchte gerne bei meinem Script ControlSend benutzen und das läuft ja nach diesem:
ControlSend ( "title", "text", controlID, "string" )
Schema ab. Jetzt stellt sich mir die Frage, was ich wenn ich das ans LC fenster schicken muss bei controlID eintragen muss kann mir da jemand vlt weiterhelfen?
LG
Control Center for Admin Easy to Control all 10/16/2009 - MapleStory - 2 Replies Credits go to ucyc for making this nice programm
http://www.pictureupload.de/originals/pictures/15 1009164127_2.jpg
http://www.pictureupload.de/originals/pictures/15 1009164303_3.jpg
Download
Click here
wtf controlclick/send kommtm manchmal nicht an was tun?? 10/26/2008 - Guild Wars - 11 Replies Ja ich hab das Problem das ich grad bei meinem HFFF bot den ich im Hintergrund laufen lassen will mit controlclick die klicks machen will und mit controlsend halt des zeug mit den tasten aber manchmal kommen irgendwie nicht alle klicks an=(
danke schon mal im Vorraus:handsdown: