Problem mit Controlsend

08/02/2010 13:16 Italien...Donni#16
hm ich glaube schon weis aber nicht auf jedenfall liegts daran wen der bot 1 drückt oder tab und ich im hintergrund auch tab oder 1 schreibe dan fängt tastatur An zu Spinnen daran liegts auf jedenfall funktioniert das MiT _Keysend nicht..
08/03/2010 14:33 KDeluxe#17
Wofür gibts PostMessage?

Hier mal ein Beispiel, musst du natürlich noch anpassen:
PHP Code:
#include <EditConstants.au3>

#Region GUI
GUICreate("KDForm"17735)
GUISetBkColor(0xFFFFFF)
GUICtrlCreateLabel("F"10101117)
GUICtrlSetFont(-188000"MS Sans Serif")
$I_F GUICtrlCreateInput("1"3082521$ES_CENTER)
GUICtrlSetLimit(-120)
$B_F GUICtrlCreateButton("Send F"8057525)
GUISetState(@SW_SHOW)
#EndRegion

While True
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case -3
            
Exit
        Case 
$B_F
            _SendFKey
(WinGetHandle("[CLASS:Nksp]"), GUICtrlRead($I_F))
    EndSwitch
WEnd


Func _SendFKey
($hWnd$Key)
   
$Key 111 $Key

    
For $i 1 To StringLen($Key)
        
$ret DllCall("user32.dll""int""MapVirtualKey""int"$Key"int"0)
        If 
IsArray($retThen
            DllCall
("user32.dll""bool""PostMessage""hwnd"$hWnd"int"0x100"int"$Key"long"_MakeLong(1$ret[0]))
            
Sleep(100)
            
DllCall("user32.dll""bool""PostMessage""hwnd"$hWnd"int"0x101"int"$Key"long"_MakeLong(1$ret[0]) + 0xC0000000)
        EndIf
    
Next
EndFunc

Func _MakeLong
($LoWord$HiWord) ;WinAPI.au3
    
Return BitOR($HiWord 0x10000BitAND($LoWord0xFFFF))
EndFunc 
Die Funktion ist eigentlich für F-Tasten gedacht, deswegen habe ich immer die 111 addiert.

Eine Tabelle mit den benötigten Codes findest du [Only registered and activated users can see links. Click Here To Register...].
08/03/2010 14:49 bladerofdarknes#18
ich hab meine zweifel ob er das versteht ;)

Quote:
DllCall("user32.dll", "bool", "PostMessage", "hwnd", $hWnd, "int", 0x100, "int", $Key, "long", _MakeLong(1, $ret[0]))
Sleep(100)
DllCall("user32.dll", "bool", "PostMessage", "hwnd", $hWnd, "int", 0x101, "int", $Key, "long", _MakeLong(1, $ret[0]) + 0xC0000000)
08/03/2010 14:54 KDeluxe#19
Braucht man nicht, kann man auch in eine UDF packen. Dafür sollte man aber für die "{Tasten}" StringReplace benutzen.
08/03/2010 15:38 Italien...Donni#20
hm ich versteh das wirklich nich -.-
08/03/2010 15:40 KDeluxe#21
Ich kann ja mal eine UDF basteln, benutzt du noch andere Tasten außer Tab, die länger als 1 sind (z. B. "W")?
08/03/2010 15:48 Italien...Donni#22
soll ich dir mal das ganze zeigen?


PHP Code:
    Func _1()
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{TAB}")
        
Sleep(50)
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{TAB}")
        
Sleep(50)
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{TAB}")
        
Sleep(50)
        
ControlSend("4Story_GSP",""0"{TAB}")
        
Sleep(400)
        
ControlSend("4Story_GSP",""0"{1}")
        
Sleep(1750)
        
ControlSend("4Story_GSP","",0"{TAB}")
        
Sleep(400)
        
ControlSend("4Story_GSP",""0"{1}")
        
Sleep (1750)
        
ControlSend("4Story_GSP",""0"{TAB}")
        
Sleep(400)
        
ControlSend("4Story_GSP",""0"{1}")
        
Sleep(1750)
        
ControlSend("4Story_GSP","",0"{TAB}")
        
Sleep(400)
        
ControlSend("4Story_GSP",""0"{1}")
        
Sleep (1750)

        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{TAB}")
        
Sleep(50)
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{TAB}")
        
Sleep(50)
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{TAB}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{1}")
        
Sleep(1750)
        
ControlSend("4Story_GSP","",0"{TAB}")
        
Sleep(400)
        
ControlSend("4Story_GSP",""0"{1}")
        
Sleep (1750)
        
ControlSend("4Story_GSP",""0"{X}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{Z}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{X}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{Z}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{X}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{Z}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP",""0"{Y}")
        
ControlSend("4Story_GSP","",0"{TAB}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{1}")
        
Sleep(1000)
        
ControlSend("4Story_GSP",""0"{X}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{Z}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{X}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{Z}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{X}")
        
Sleep(250)
        
ControlSend("4Story_GSP",""0"{Z}")
        
Sleep(250)
    
EndFunc 
Des alles soll er klicken aber ich brauche das in einer funktion weil ich das mit einer anderen funktion dan kombinieren will :=)
08/03/2010 16:05 KDeluxe#23
Ist ja nicht sonderlich viel.
[Only registered and activated users can see links. Click Here To Register...]

Die "{}" darfst du aber nur um TAB setzen.
08/03/2010 16:14 Italien...Donni#24
brauch ich da alle 3 dateien und danke:=)
08/03/2010 16:18 KDeluxe#25
Nur die "PostMessage.au3", das Beispiel ist wie der Dateiname verrät nur ein Beispiel und
die "Crap" Datei ist nur wegen den 50 kb dabei (uploaded Punkte).

Einfach in dein AutoIt\Include Ordner packen und per "#include <PostMessage.au3>" einbinden.
08/03/2010 16:24 HardCore.1337#26
Du weißt aber, das ControlSend auch nur auf PostMessage arbeitet.
Demnach dürften keine anderen Ergebnisse zu erwarten sein.
08/03/2010 16:24 Italien...Donni#27
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")

beim TAB so? und bei allen anderen nicht oder?


#Edit

Nun ignoriert er einfach die Sleeps also klickt einfach drauf hin-.- hab iich alles richtig gemacht?

PHP Code:
Func _1()
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(50)
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(50)
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(50)
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(400)
        
_PostMessage(WinGetHandle("4Story_GSP"), "1")
        
Sleep(1750)
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(400)
        
_PostMessage(WinGetHandle("4Story_GSP"), "1")
        
Sleep(1750)
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(400)
        
_PostMessage(WinGetHandle("4Story_GSP"), "1")
        
Sleep(1750)
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(400)
        
_PostMessage(WinGetHandle("4Story_GSP"), "1")
        
Sleep (1750)
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(50)
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(50)
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(50)
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(250)
        
_PostMessage(WinGetHandle("4Story_GSP"), "1")
        
Sleep(1750)
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(400)
        
_PostMessage(WinGetHandle("4Story_GSP"), "1")
        
Sleep (1750)
        
_PostMessage(WinGetHandle("4Story_GSP"), "X")
        
Sleep(250)
        
_PostMessage(WinGetHandle("4Story_GSP"), "Z")
        
Sleep(250)
        
_PostMessage(WinGetHandle("4Story_GSP"), "X")
        
Sleep(250)
        
_PostMessage(WingetHandle("4Story_GSP"), "Z")
        
Sleep(250)
        
_PostMessage(WinGetHandle("4Story_GSP"), "X")
        
Sleep(250)
        
_PostMessage(WinGetHandle("4Story_GSP"), "Z")
        
Sleep(250)
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "Y")
        
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")
        
Sleep(250)
        
_PostMessage(WinGetHandle("4Story_GSP"), "1")
        
Sleep(1000)
        
_PostMessage(WinGetHandle("4Story_GSP"), "X")
        
Sleep(250)
        
_PostMessage(WinGetHandle("4Story_GSP"), "Z")
        
Sleep(250)
        
_PostMessage(WinGetHandle("4Story_GSP"), "X")
        
Sleep(250)
        
_PostMessage(WingetHandle("4Story_GSP"), "Z")
        
Sleep(250)
        
_PostMessage(WinGetHandle("4Story_GSP"), "X")
        
Sleep(250)
        
_PostMessage(WinGetHandle("4Story_GSP"), "Z")
        
Sleep(250)
    
EndFunc 
08/03/2010 17:04 KDeluxe#28
Quote:
Originally Posted by HardCore.1337 View Post
Du weißt aber, das ControlSend auch nur auf PostMessage arbeitet.
Demnach dürften keine anderen Ergebnisse zu erwarten sein.
Stimmt nicht ganz. Das Ergebnis ist auch mehr als zufriedenstellend.

Quote:
Originally Posted by italien1995 View Post
_PostMessage(WinGetHandle("4Story_GSP"), "{TAB}")

beim TAB so? und bei allen anderen nicht oder?


#Edit

Nun ignoriert er einfach die Sleeps also klickt einfach drauf hin-.- hab iich alles richtig gemacht?
Wäre mir neu, dass AutoIt ohne weiteres Sleeps ignoriert. Ich hab das ganze
aber mal ein bisschen erweitert und einen zusätzlichen Parameter hinzugefügt.
Der neue Parameter hat die selbe Funktion wie die Option "SendKeyDownDelay".
[Only registered and activated users can see links. Click Here To Register...]

Das Script an sich würde ich in etwa so machen:
PHP Code:
Func _1()
    
$WinHandle WinGetHandle("4Story_GSP")
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(50)
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(50)
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(50)
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(400)
    
_PostMessage($WinHandle"1")
    
Sleep(1750)
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(400)
    
_PostMessage($WinHandle"1")
    
Sleep(1750)
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(400)
    
_PostMessage($WinHandle"1")
    
Sleep(1750)
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(400)
    
_PostMessage($WinHandle"1")
    
Sleep (1750)
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(50)
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(50)
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(50)
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(250)
    
_PostMessage($WinHandle"1")
    
Sleep(1750)
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(400)
    
_PostMessage($WinHandle"1")
    
Sleep (1750)
    
_PostMessage($WinHandle"X")
    
Sleep(250)
    
_PostMessage($WinHandle"Z")
    
Sleep(250)
    
_PostMessage($WinHandle"X")
    
Sleep(250)
    
_PostMessage($WinHandle"Z")
    
Sleep(250)
    
_PostMessage($WinHandle"X")
    
Sleep(250)
    
_PostMessage($WinHandle"Z")
    
Sleep(250)
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"Y")
    
_PostMessage($WinHandle"{TAB}")
    
Sleep(250)
    
_PostMessage($WinHandle"1")
    
Sleep(1000)
    
_PostMessage($WinHandle"X")
    
Sleep(250)
    
_PostMessage($WinHandle"Z")
    
Sleep(250)
    
_PostMessage($WinHandle"X")
    
Sleep(250)
    
_PostMessage($WinHandle"Z")
    
Sleep(250)
    
_PostMessage($WinHandle"X")
    
Sleep(250)
    
_PostMessage($WinHandle"Z")
    
Sleep(250)
EndFunc 
Vielleicht musst du den dritten Parameter aber erhöhen (Standard ist 5 ms).
Würde dann so aussehen:
PHP Code:
_PostMessage($WinHandle"{TAB}"250
08/03/2010 17:17 Italien...Donni#29
ich habe zwar keine ahung aber er ignoriert wirklich einfach die Sleeps aber der muss warten weil er die zeit brauhct um die mobs zu killen
08/03/2010 17:30 KDeluxe#30
Ich hab kein 4Story, habs aber bei LC getestet, bei mir funktioniert es auch, vielleicht solltest du die Sleeps erhöhen?