Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Guild Wars > GW Bots
You last visited: Today at 00:35

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Control Send = ich verstehs nicht

Discussion on Control Send = ich verstehs nicht within the GW Bots forum part of the Guild Wars category.

Reply
 
Old   #1
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Control Send = ich verstehs nicht

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 lassendamit 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

PHP Code:
...
send ("1")
sleep($ZA)
send ("{Space}")
... 
wird dann..?

PHP Code:
Controlsend ("Guild Wars""""""1"1)
sleep ($ZA)
Controlsend ("Guild Wars""""""{Space}"1

Außerdem weiß ich nicht wie ich /resign eingeben soll...
/resign so geht ja nicht.
Und wenn ich es folgendermaßen mache gehts auch nicht

PHP Code:
ControlSend($client"""""+7")
sleep(500)
ControlSend($client"""""resign"
Er erkennt irgendwie das "/" nicht. Muss ja theoretisch Umaschalt + 7 drücken.

P.S. hab ich gelesen...funktioniert aber nicht


Markus
HardCore.1337 is offline  
Old 08/02/2009, 21:57   #2
 
Rosemarie Lein's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 388
Received Thanks: 113
Minimieren is nich, nur im Hintergrund haben.
Sonst, schau dir mal Opt MouseClickDelay und Opt SendKeyDelay und den ganzen Spaß an.
Rosemarie Lein is offline  
Old 08/02/2009, 22:08   #3
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
ne, oder`?

geht das sonst gar nicht?
HardCore.1337 is offline  
Old 08/03/2009, 00:49   #4
 
Rosemarie Lein's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 388
Received Thanks: 113
Quote:
Originally Posted by General Desert View Post
ne, oder`?

geht das sonst gar nicht?
Fenster kann versteckt sein, es darf aber nich minimiert sein
Rosemarie Lein is offline  
Old 08/03/2009, 09:23   #5
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Mit welchem befehl kann ich es verstecken?
Ach und dann nochwas. Wenn es "minimiert" ist, klappt ControlClick nicht

PHP Code:
ControlClick($client"""""left"1827545
Da pssiert rein gar nix
HardCore.1337 is offline  
Old 08/03/2009, 15:02   #6
 
Rosemarie Lein's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 388
Received Thanks: 113
Quote:
Originally Posted by Rosemarie Lein View Post
Fenster kann versteckt sein, es darf aber nich minimiert sein
Quote:
Originally Posted by General Desert View Post
Wenn es "minimiert" ist, klappt ControlClick nicht
^^
Quote:
Originally Posted by General Desert View Post
Mit welchem befehl kann ich es verstecken?
Quote:
Originally Posted by General Desert View Post
PHP Code:
WinSetState($client"", @SW_HIDE
Rosemarie Lein is offline  
Old 08/03/2009, 15:48   #7
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
OK, ich habs jetzt so

PHP Code:
HotKeySet("{NUMPADSUB}""_mini")
HotKeySet("{NUMPADADD}""_maxi")

...

Func _mini()
    
$client WinGetTitle """")
    
Sleep(50)
    
WinSetState($client"", @SW_HIDE )
EndFunc

Func _maxi
()
    
WinSetState($client"", @SW_SHOW )

    If 
WinActive($clientThen
    
Else
        
WinActivate($client)
    EndIf
EndFunc 
Das geht ja noch alles.(Fenster wird jetzt versteckt oder?)
Aber jetzt

PHP Code:
;Zurück
sleep
(3000)
ControlSend($client"""""{Enter}"0)
ControlSend ($client"""""{Up}"0)
ControlSend($client"""""{Enter}"0)
sleep(2000)

;
Resign Button drücken
sleep
(1500)
ControlClick($client"""""left"1827545)
sleep(3000
Resign eingeben geht auch noch, aber die maus wandert einfach nicht auf den Button
HardCore.1337 is offline  
Old 08/03/2009, 17:02   #8
 
elite*gold: 0
Join Date: Apr 2008
Posts: 603
Received Thanks: 94
ControlClick($client, "", "", "left", 1, 827, 545) ist etwas buggy leider du solltest da mal nach _MouseClickPlus suchen damit kannst du alles ansprechen und klicken
emtec22 is offline  
Old 08/03/2009, 18:01   #9
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
guck dir mal den tread an: "
| Moep | is offline  
Old 08/08/2009, 23:01   #10
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
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?

mein Code:

PHP Code:
  Func Maus ()
      
DllCall("Functions.dll","int","fnSetCursorPos","int"1400"int"1200)
EndFunc

;Maus bewegen

WinWaitActive 
("Guild Wars1")
sleep (3000)
Maus ()
sleep(5000
Tut sich leider gar nix.

Laut der Hilfe muss sie aber so ähnlich aufgerufen werden.
PHP Code:

$Fenster 
WinGetHandle("Guild Wars")

$X 300

$Y 
200

$LPARAM 
_MakeLong(300,200)

DllCall("Functions.dll","int","fnSetCursorPos","in t"300"int"200
HardCore.1337 is offline  
Old 08/10/2009, 17:15   #11
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
keiner ne idee?
HardCore.1337 is offline  
Old 08/10/2009, 21:02   #12


 
buFFy!'s Avatar
 
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,283
Deine Lösung:
Code:
Opt('SendKeyDelay', 150)
Opt('SendKeyDownDelay', 150)

$hwnd = WinGetHandle('Guild Wars')
WinSetState($hwnd, "", @SW_HIDE)
Sleep(1000)
ControlSend($hwnd, "", "", "{enter}" & "hello")
Sleep(1000)
WinSetState($hwnd, "", @SW_SHOW)
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.

Code:
;/Wichtig
#include <WindowsConstants.au3>

$hwnd = WinGetHandle('Guild Wars')
WinSetState($hwnd, "", @SW_HIDE)
SimulKey($hwnd, 'enter')
Sleep(1000)
SimulKey($hwnd, 'hello', 1, 'skip', 100)
WinSetState($hwnd, "", @SW_SHOW)
Resignansatz ohne "/":
Code:
;/Wichtig
#include <WindowsConstants.au3>

$hwnd = WinGetHandle('Guild Wars')

SimulKey($hwnd, '-resign', 1, 'skip', 100)
Sleep(100)
SimulKey($hwnd, 'enter')
buFFy! is offline  
Thanks
1 User
Old 10/21/2009, 19:51   #13
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Sry das ich nochma Anfange mit dem thema...

ich habe jetzt alles probiert.
-- ControlClic
-- MouseClick Plus
-- tt6

und alles mit zeitverzögerung. und ja, ich habe das fenster nicht minimiert sondern versteckt (@SW_HIDE)

Das klappt aber alles nicht. Hab mir jetzt extra Windows XP wegen 32Bit wieder draufgemacht. Ich könnte heulen

Hat jmd einen beispiel Script oder so??

mfg
markus
HardCore.1337 is offline  
Old 10/21/2009, 19:57   #14
 
Syc0n's Avatar
 
elite*gold: 20
Join Date: Oct 2008
Posts: 1,835
Received Thanks: 1,638
Nehm Mousesend aus der tt6.
Syc0n is offline  
Old 10/21/2009, 19:59   #15
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Funkt ja nicht

so ne kacke mit dem ControlSend^^
langsam ni mehr lustig
HardCore.1337 is offline  
Reply


Similar Threads Similar Threads
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:



All times are GMT +2. The time now is 00:35.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.