|
You last visited: Today at 06:21
Advertisement
Button Problem
Discussion on Button Problem within the AutoIt forum part of the Coders Den category.
02/19/2010, 22:25
|
#1
|
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
|
Button Problem
Hey Comunity,
ich hab da ein Problem. Hab auch schon SuFu & Google benutzt + Scripts
angeguckt, aber anscheinend hat niemand das selbe Problem wie ich.
Und zwar hab ich mir nen simplen Bot gemacht, der mich in Guild Wars anmelden
soll und dann nen Charakter auswählen soll. Klappt auch alles soweit gut^^
Aber ich hab jetzt noch 2 Buttons eingebaut; Start und Stopp.
Start = GW in den Vordergrund, W gedrückt halten, 10 secs halten
und dann den Bot in den Vordergrund.
Stopp = GW in den Vordergrund und W loslassen.
Hab auch noch den "Schließen" Button mit den Anweisungen Exit, ExitLoop und GUIDelete()
belegt, und das funktioniert auch, sofern das Programm seine Befehle abgearbeitet hat.
Aber der Start und der Stopp Button wollen ums Verecken nicht funktionieren.
Habs schon mit Select-Case, Switch-Case und aus lauter Verzweiflung mit If-Then
versucht, alles hat nicht geklappt... Hier mal die 3 Codes, was mach ich falsch?
If Then
PHP Code:
#include <GUIConstantsEx.au3>
GUICreate("Guild Wars Bot", 335, 100)
GUICtrlCreateLabel("W Drücken", 8, 10)
$start = GUICtrlCreateButton("Start", 100, 8, 60)
$end = GUICtrlCreateButton("Stopp", 200, 8, 60)
GUISetState(@SW_SHOW)
Run("C:\Programme\GUILD WARS\Gw.exe", "", @SW_MAXIMIZE) ;Guild Wars starten & in den Vordergrund
Sleep(7000)
Opt("SendKeyDownDelay", 50)
Opt("SendKeyDelay", 50)
$hWnd = WinGetHandle("Guild Wars") ;Handle von Guild Wars holen
ControlSend($hWnd, "", "", "xyz") ;Passwort eingeben (xyz ist natürlich nicht das richtige^^)
Sleep(10)
ControlSend($hWnd, "", "", "{enter}") ;einloggen
Sleep(2500)
ControlSend($hWnd, "", "", "{enter}") ;Charakter auswählen
Sleep(8000)
$hwnd = WinGetHandle("Guild Wars Bot") ;Handle vom Bot holen
WinActivate($hwnd) ;Bot in den Vordergrund
Func start()
WinActivate($hWnd) ;Guild Wars in den Vordergrund
ControlSend($hWnd, "", "", "{w down}") ;"w" gedrückt halten
Sleep(1000)
WinActivate($hwnd) ;Bot wieder in den Vordergrund
EndFunc
Func end()
WinActivate($hWnd)
ControlSend($hWnd, "", "", "{w up}") ;"w" loslassen
EndFunc
While 1
$nMsg = GUIGetMsg()
If $nMsg = $GUI_EVENT_CLOSE Then
Exit
ExitLoop
GUIDelete($hwnd)
EndIf
If $nMsg = $start Then
start()
EndIf
If $nMsg = $end Then
end()
EndIf
WEnd
Switch Case
PHP Code:
#include <GUIConstantsEx.au3>
GUICreate("Guild Wars Bot", 335, 100)
GUICtrlCreateLabel("W Drücken", 8, 10)
$start = GUICtrlCreateButton("Start", 100, 8, 60)
$end = GUICtrlCreateButton("Stopp", 200, 8, 60)
GUISetState(@SW_SHOW)
Run("C:\Programme\GUILD WARS\Gw.exe", "", @SW_MAXIMIZE) ;Guild Wars starten & in den Vordergrund
Sleep(7000)
Opt("SendKeyDownDelay", 50)
Opt("SendKeyDelay", 50)
$hWnd = WinGetHandle("Guild Wars") ;Handle von Guild Wars holen
ControlSend($hWnd, "", "", "xyz") ;Passwort eingeben (xyz ist natürlich nicht das richtige^^)
Sleep(10)
ControlSend($hWnd, "", "", "{enter}") ;einloggen
Sleep(2500)
ControlSend($hWnd, "", "", "{enter}") ;Charakter auswählen
Sleep(8000)
$hwnd = WinGetHandle("Guild Wars Bot") ;Handle vom Bot holen
WinActivate($hwnd) ;Bot in den Vordergrund
Func start()
WinActivate($hWnd) ;Guild Wars in den Vordergrund
ControlSend($hWnd, "", "", "{w down}") ;"w" gedrückt halten
Sleep(1000)
WinActivate($hwnd) ;Bot wieder in den Vordergrund
EndFunc
Func end()
WinActivate($hWnd)
ControlSend($hWnd, "", "", "{w up}") ;"w" loslassen
EndFunc
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
ExitLoop
GUIDelete($hwnd)
Case $start
start()
Case $end
end()
EndSwitch
WEnd
Select Case
PHP Code:
#include <GUIConstantsEx.au3>
GUICreate("Guild Wars Bot", 335, 100)
GUICtrlCreateLabel("W Drücken", 8, 10)
$start = GUICtrlCreateButton("Start", 100, 8, 60)
$end = GUICtrlCreateButton("Stopp", 200, 8, 60)
GUISetState(@SW_SHOW)
Run("C:\Programme\GUILD WARS\Gw.exe", "", @SW_MAXIMIZE) ;Guild Wars starten & in den Vordergrund
Sleep(7000)
Opt("SendKeyDownDelay", 50)
Opt("SendKeyDelay", 50)
$hWnd = WinGetHandle("Guild Wars") ;Handle von Guild Wars holen
ControlSend($hWnd, "", "", "xyz") ;Passwort eingeben (xyz ist natürlich nicht das richtige^^)
Sleep(10)
ControlSend($hWnd, "", "", "{enter}") ;einloggen
Sleep(2500)
ControlSend($hWnd, "", "", "{enter}") ;Charakter auswählen
Sleep(8000)
$hwnd = WinGetHandle("Guild Wars Bot") ;Handle vom Bot holen
WinActivate($hwnd) ;Bot in den Vordergrund
Func start()
WinActivate($hWnd) ;Guild Wars in den Vordergrund
ControlSend($hWnd, "", "", "{w down}") ;"w" gedrückt halten
Sleep(1000)
WinActivate($hwnd) ;Bot wieder in den Vordergrund
EndFunc
Func end()
WinActivate($hWnd)
ControlSend($hWnd, "", "", "{w up}") ;"w" loslassen
EndFunc
While 1
$nMsg = GUIGetMsg()
Select
Case $nMsg = $GUI_EVENT_CLOSE
Exit
ExitLoop
GUIDelete($hwnd)
Case $nMsg = $start
start()
Case $nMsg = $end
end()
EndSelect
WEnd
Dazu muss ich noch sagen, dass ich absoluter AutoIt Anfänger bin.
Wenn ich etwas falsch gemacht hab (auch wenns fatal ist) bitte nicht anflamen.
Vllt brauch ich ja noch nen Header oder whatever, keine Ahnung 
Achja, hab auch schon direkt die Befehle hinter zb Case geschrieben, also
ohne Funktion, hat aber auch nicht funktioniert.
Hoffe, ihr könnt mir helfen und bitte nett sein^^
|
|
|
02/19/2010, 22:58
|
#2
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
Ich weiß nicht ob das mit deiner Frage zusammen hängt, aber:
1) Hwnd und hWnd sind das gleiche. Groß und kleinschreibung sind egal
2) dann versteh ich was nicht:
PHP Code:
Func start() WinActivate($hWnd) ;Guild Wars in den Vordergrund ControlSend($hWnd, "", "", "{w down}") ;"w" gedrückt halten Sleep(1000) WinActivate($hwnd) ;Bot wieder in den Vordergrund EndFunc
Func end() WinActivate($hWnd) ControlSend($hWnd, "", "", "{w up}") ;"w" loslassen EndFunc
In der Funktion "Start" drückst du W und lässt es gedrückt bis du die Funktion End aufrufst? Warum das?
4)
PHP Code:
Case $nMsg = $GUI_EVENT_CLOSE Exit ExitLoop GUIDelete($hwnd)
Exit reicht
5) Wo rufst du die Funktionen auf o0? ich seh nix (nix gegen dich, vlt hab ichs einfach nicht endeckt  )
Und generell, was soll der Bot überhaupt machen? Du schickst ihn in den Hintergrund, drückst lange W und holst ihn wieder in den Vordergrund
|
|
|
02/19/2010, 23:30
|
#3
|
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
|
Also da ich ja in den Anfängen von AutoIt bin, ist das einfach nur ein Testbot 
Ich will mich halt stückweise vorarbeiten, und den bot Stück für Stück erweitern.
Deswegen auch das mit den W drücken und der end Funktion, einfach um zu sehen obs klappt ^^
Und aus dem W drücken wird dann irgendwann mehr und mehr, bis es ein vollständiger Bot ist^^
Und wegen hwnd und hWnd: hwnd=Handle vom Bot und hWnd=Handle von Guild Wars.
Sieht man auch hier:
PHP Code:
$hWnd = WinGetHandle("Guild Wars") ;Handle von Guild Wars holen
$hwnd = WinGetHandle("Guild Wars Bot") ;Handle vom Bot holen
Zu 5., Da ruf ich keine Funktion auf, weil das ja auch so klappt^^
Aber haste keine Idee, warum die Buttons nicht funktionieren?
€dit: Sry, dass die Antwort erst jetzt kommt, war noch duschen
|
|
|
02/20/2010, 00:28
|
#4
|
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
|
die handles bleiben doch gleich wenn es das selbe fenster ist, kapier ich grad nicht.
deine buttons werden nicht gehen da es kein winhandle für den fensternamen "guild wars bot" gibt. oder heisst dein gw client wirklich guild wars bot? meiner heisst nur Guild Wars.
|
|
|
02/20/2010, 09:20
|
#5
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
Hab ich auch erst nicht, aber schau mal:
$Hwnd = WingetProcess ("Guild Wars")
und $hWnd = WinGetProcess ("Guild Wars Bot")
Das heißt, er holt sich das Handle von seinem eigenen Programm.
und $Hwnd = $hWnd.
Groß und kleinschreibung wird nicht beachtet.
Aber trotz allen müssten die Buttons eigentlich gehen
|
|
|
02/20/2010, 10:14
|
#6
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Tja, da default "Opt("WinTitleMatchMode", 1)" gesetzt ist funktioniert beides.
es würde genauso "$hWnd = WinGetHandle("Guild Wars dsfghsbf j")" funktionieren...
|
|
|
02/20/2010, 10:36
|
#7
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
ja aber die variable würde doch dann ersetzt werden, weil hWnd und Hwnd gleich sind.
Oder irre ich mich da
|
|
|
02/20/2010, 10:40
|
#8
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
ja stimmt auch, da groß und kleinschreibung bei autoit keine relevanz hat besitz die variable den letzen zugewiesenen wert.
|
|
|
02/20/2010, 11:12
|
#9
|
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
|
Oh man geil =D
Jetzt klappts endlich, hab einfach hwnd & hwnd2 gemacht 
Bin das von C++ gewöhnt, dass man auf Groß- und Kleinschreibung achten muss^^
Vielen Dank!
Und btw, ja ich hab mir den Handle von meinem Bot geholt,
damit ich den mit WinActivate in den Vordergrund holen kann^^
Und bei mir heißt das Gw Fenster auch Guild Wars =D
Warum sollte mein Gw Fenster Guild Wars Bot heißen? xD
Naja egal auch, es klappt^^
Thx nochmal
Aber jetzt kommt grad noch ein Problem, und zwar hab ich nen Bot gemacht, der
auf Knopfdruck GW maximieren soll und dann abwechselnd /sit und /stand spammen soll.
Also wenn ich es ohne Switch-Case direkt in den Loop (oder wie heißt das?^^) mache,
klappt es auch prima, aber wenn ich es mit Switch-Case oder auch mit ner If schleife mache,
maximiert der Bot GW, spammt ungefähr 5 mal /sit & /stand in den Chat, aber nach den paar
mal hört das Programm aufeinmal auf, es drückt auch keine Inventar-Taste oder was auch
immer, also ein Enter hab ich nicht vergessen. Ich hab mir jetzt gedacht, dass es vllt daran
liegt, dass es bei Schleifenbeginn immerwieder WinAvtivate($hwnd) macht, und deswegen
gibts irgend ne Störung im Programm oder ka was, aber das kann ja nicht sein, sonst hätte
es ja schon nach 1 mal Spam, also einem Schleifendurchlauf geendet.
€dit: Habs jetzt mal mit ner func gemacht, jetzt durchläufts wirklich nurnoch 1 mal
die Schleife als es kommt nur einmal /sit & /stand an.....
Wisst ihr, wo das Problem liegt?
PHP Code:
#include <GUIConstantsEx.au3>
GUICreate("Guild Wars Bot", 335, 100)
$hello = GUICtrlCreateButton("Los!", 100, 8)
GUISetState(@SW_SHOW)
Opt("SendKeyDownDelay", 50)
Opt("SendKeyDelay", 50)
$hwnd = WinGetHandle("Guild Wars")
Func hellofunc()
WinActivate($hwnd)
Sleep(1000)
ControlSend($hwnd, "", 0, "{enter}")
sleep(50)
ControlSend($hwnd, "", 0, "{shiftdown}7{shiftup}sit")
sleep(50)
ControlSend($hwnd, "", 0, "{enter}")
sleep(50)
ControlSend($hwnd, "", 0, "{enter}")
sleep(50)
ControlSend($hwnd, "", 0, "{shiftdown}7{shiftup}stand")
sleep(50)
ControlSend($hwnd, "", 0, "{enter}")
sleep(50)
EndFunc
While 1
$msg = GUIGetMsg()
Switch $msg
Case $hello
hellofunc()
EndSwitch
WEnd
Ich hab echt keine Idee oO
|
|
|
02/20/2010, 11:19
|
#10
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
Kleiner Tipp. Nutz
PHP Code:
WinSetState ("GuildWars", "", @SW_SHOW)
und
PHP Code:
WinSetState ("Guild Wars", "", @SW_HIDE)
also:
PHP Code:
Global $i Global $Anzahl = InputBox("Frage", "Wie oft soll gespammt werden?")
Func Start () WinSetState("Guild Wars", "", @SW_SHOW) For $i = 1 to $Anzahl ControlSend ("Guild Wars", "", "", "{ShiftDown}") ControlSend ("Guild Wars", "", "", "7") ControlSend ("Guild Wars", "", "", "{ShiftUp}") ControlSend ("Guild Wars", "", "", "sit") ... Next
|
|
|
02/20/2010, 11:25
|
#11
|
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
|
Ok, ich versuchs mal^^
Aber was macht WinSetState denn?
Erst show und dann hide? oO
|
|
|
02/20/2010, 11:27
|
#12
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
Show holt das Fenster in den Vordergrund
Hide versteckt es^^
|
|
|
02/20/2010, 11:43
|
#13
|
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
|
Also, ich hab jetzt mal ein bisschen umgeändert, das Prinzip ist aber das selbe.
Aber egal, welche Anzahl ich eingebe, es durchläuft die Schleife immer nur 4 mal.
PHP Code:
#include <GUIConstantsEx.au3>
GUICreate("Guild Wars Bot", 335, 100)
$hello = GUICtrlCreateButton("Los!", 100, 8)
Global $input = GUICtrlCreateInput("", 50, 8)
GUISetState(@SW_SHOW)
Opt("SendKeyDownDelay", 40)
Opt("SendKeyDelay", 40)
$hwnd = WinGetHandle("Guild Wars")
Global $i
Func hellofunc()
WinSetState("Guild Wars", "", @SW_MAXIMIZE)
For $i = 1 to $input
ControlSend($hwnd, "", 0, "{enter}")
sleep(30)
ControlSend($hwnd, "", 0, "{shiftdown}7{shiftup}sit")
sleep(30)
ControlSend($hwnd, "", 0, "{enter}")
sleep(30)
ControlSend($hwnd, "", 0, "{enter}")
sleep(30)
ControlSend($hwnd, "", 0, "{shiftdown}7{shiftup}stand")
sleep(30)
ControlSend($hwnd, "", 0, "{enter}")
sleep(30)
Next
EndFunc
While 1
$msg = GUIGetMsg()
Switch $msg
Case $hello
hellofunc()
EndSwitch
WEnd
Habs in @SW_MAXIMIZE umgeändert, weil @SW_SHOW bei mir nicht funktioniert^^
|
|
|
02/20/2010, 12:20
|
#14
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
probier mal
Global $Input = Inputbox()
|
|
|
02/20/2010, 13:04
|
#15
|
elite*gold: 20
Join Date: Dec 2009
Posts: 1,850
Received Thanks: 484
|
Cool, jetzt klappts^^
Aber warum klappte das nicht mit GUICtrlCreateInput?
Naja, egal^^
Vielen dank nochmal^^
|
|
|
 |
|
Similar Threads
|
Regi problem keine button anklickbar oO
05/12/2010 - Metin2 Private Server - 5 Replies
moin,
hab folgendes problem bei meiner regi:
Mann kann registration usw nich sehen oder anklicken hier n screen:
http://img508.imageshack.us/img508/7845/regi.png
|
BUTTON problem
03/01/2010 - AutoIt - 1 Replies
Hallo Leute,
Ich hab jetzt einen ganz guten farmbot für mich gemacht
doch ein problem habe ich,da ich nicht weiß wie man ein bot pausiert (durch einen button) muss ich den bot immer wieder schließen.
Hat jemand ne lösung für mich
danke im voraus:)
|
WarRock statt KOREANISCHE BUTTON --> Englische BUTTON
02/26/2010 - WarRock - 6 Replies
Bin mir nicht sicher ob es diesen Thread schon gibt
aber hab bis jetzt nichts gesehen hier.
Funktionen
Für WarRock Korea
Koreanische Schriften (Button) weg und englische Schriften (Button) hin
Anleitung
|
login problem no button
02/07/2010 - SRO Private Server - 5 Replies
hey all
look at the pictures plz, i cant login cuzz i see no buttons.
any1 know how to help me?
|
ECSRO - button problem on vista
04/19/2009 - SRO Private Server - 1 Replies
I tried to play ecsro on notebook with vista but i have a problem with the buttons by logining.
I'll not explain to much, i think that those screens say everything.
http://i88.servimg.com/u/f88/12/08/50/36/siilk110 .jpg
http://i88.servimg.com/u/f88/12/08/50/36/silk210. jpg
I can't start the game after i choose my char, because i dont see the buttons :(
Do anyone know how can i fix it ?
|
All times are GMT +1. The time now is 06:22.
|
|