Kann man das $handle irgendwie einbinden um Befehle an Fenster zu senden?
Mir gings eig. darum, dass Handle von einem Fenster zu kriegen - okay, das ist jetzt eig kein Problem - um ein Fenster klar definiert zu haben.
Wenn es 2 Fenster gibt mit dem gleichen Namen kann ich nicht schreiben ControlSend("Name" ...) , da ich nicht will dass der Befehl an beide Fenster kommt.
Hätte ich jetzt das Handle von einem Fenster könnte man den Befehl ja über das Handle nur an das eine Fenster senden. - So zumindest meine Überlegung Habs an 2 Notepads getestet aber es ging ja nicht mit dem
ControlSend($handle ...)
wie geholt?
in autoit wird alles in vairbalen gespeichert. ob du das handle jetzt noch irgendwo ins gui schreibst, und dann per guictrlread einliest, oder direkt aus einer variablen nimmst ist eigentlich egal.
Es ging nicht ums schließen an sich. hatte nur Alt + F4 zum senden genommen damit ich wirklich sehe, dass es gesendet wird.
Hat sich aber grad andres Problem ergeben.
Hab nen Script, dass hat so eine Ähnliche Struktur: Mal stark vereinfacht:
Case $Button1
While (...)
...
WEnd
Case $Button2
Soo: Mit dem Button möchte ich dir Schleife beenden die ich mit Button1 begonnen habe.
Weiß nicht genau wie ich das machen soll. Mit ExitLoop stellt sich mir die Frage welche Schleife er schließt wenn von mir aus 3 Schleifen aktiv sind.
Insgesamt 12 Buttons.
Jeweils 2 gehören zsm. Dh ich starte zB F3 die Schleife in der eine F Taste gespammt wird, und möchte sie mit F4 wider beenden ( Die Schleife)
Erstmal wär mir jede Lösung recht. Vllt gibts aber auch ne elegantere Lösung, dass ein Button Start und Stop ist. Nja. Weiss nicht genau wie ich das umsetzen kann.
dann wird nur aktion x ausgeführt. dh wenn du einen code hast
Code:
While 1
;aktion y
While 1
;aktion x
WEnd
WEnd
Wirs nur EIN mal aktion y ausgeführt.
danach ist dein tool in aktion x "gefangen". es ist nicht möglich durch eine abfrage in aktion y aktion x zu beenden, da aktion y garnicht aktiv ist.
was ich damit sagen will ist, dass man nie mehr als eine endlosschleife verwenden sollte.
willst du zb in deiner schleife neben aktion y, noch manchmal aktion x ausführen, so kannst du das über zustands-variablen lösen.
bsp:
Code:
Dim $action_x = False
While 1
;aktion y
if $action_x then ;aktion x
WEnd
;aktion y könnte jetzt zb deine GuiGetMsg() abfrage sein.
wird hier button1 gedrückt, so wird $action_x = True gesetzt. wird hingegen button2 gedrückt, so wird $action_x = False gesetzt.
auf diese art und weise kannst du per button steuern, ob aktion x ausgeführt wird, oder nicht, ohne dabei die GuiGetMsg() abfrage zu blockieren.
Ich weiss nicht genau ob ich das so aufgebaut habe. Das sieht für mich nach einer Schleife in einer Schleife aus und ich weiß nicht obs bei mir so ist. Könnte durchaus sein
Hab mir das immer so vorgestellt:
Case $Button1
While 1
aktion_x
WEnd
Case $Button2
ExitLoop ( Die von Button 1 halt.) Wird i.wie anders vllt gehen.
Case §Button3
While1
aktion_y
WEnd
Case $Button4
ExitLoop(Diesmal halt die von 3.)
Und dann immer so weiter bis ich bei Button 12 bin.
Für jede Zeile halt 1 Start und Stop Button. Entspricht das deinem Modell, also dass das garnicht klappen kann oder ist das doch was anderes??
While 1
Switch GuiGetMsg()
Case $button1
While 1
;aktion1
WEnd
....
EndSwitch
WEnd
ist? das sind verschachtelte schleifen.
sobald du in eine der schleifen in der Hauptschleife gelangst, wird die Hauptschleife nicht mehr abgearbeitet.
genau deswegen musst du mit zusatndsvariablen arbeiten...
statt den schleifen in den button abfragen, setzt du einfach nurnoch vairbalen...
Code:
Dim $aktion1 = False
While 1
Switch GuiGetMsg()
Case $button1
$aktion1 = True
Case $button2
$aktion1 = False
....
EndSwitch
If $aktion1 Then
;aktion1
EndIf
WEnd
da du dich ja sowieso in einer endlosschleife befindest, wird so aktion1 immer ausgeführt, wenn sie durch $button1 aktiviert wurde.
If $akt1 = True Then ControlSend($handle,"","", "{" & $iCombo1 & "}")
$iCombo ist definiert als:
PHP Code:
$iCombo1 = GUICtrlRead($Combo1)
Wenn ich zB in der Combobox F1 habe sender der aber nicht F1 sondern immer die Taste "C". Das ist ingame ein Action Slot. Das gilt nicht nur F1 sondern für alle Tasten in der Combo Box.
F1 is vllt die Hex Entsprechung von "C". Hast du F1 auch mit {F1} gesendet oder nur so? Wobei dann müsste er eigentlich einfach "F1" schreiben...
Poste doch einfach mal das komplette Programm und nicht immer nur codeschnipsel. Wenn man alles vorliegen hat, kann man alles viel besser verstehen und sich reindenken. So kann man immer nur spekulileren, was du eigentlich vor hast.
ControlSend Problem 11/02/2010 - AutoIt - 17 Replies Hallo alle zusammen ,
wie irh bestimmt wisst hat ControlSend immer eine Einschränkung für die Tastatur....
Jetzt wollte ich euch um Rat fragen ob es da irgendeine bestimmte UDF,oder sonsstwas gibt ...
Ich denke das würde nicht nur mir helfen sondern auch andern
Controlsend 10/12/2010 - AutoIt - 8 Replies hi,
wie kann man einen beliebiges wort in die googlesuchmaschine (nur in die inputbox von google) mit controlsend schreiben? kennt wer ein gutes tut über controlsend?
Problem mit Controlsend 08/06/2010 - AutoIt - 36 Replies Hallo,
Vielleicht haben manche von euch auch das Problem das wen es zuviele ControlSends im Script sind und du z.b. was schreiben willst dan die Tastatur komplett anfängt zu Spinnen.
z.b.:
Func _1()
ControlSend("4Story_GSP", "", 0, "{TAB}")
Sleep(150)
ControlSend("4Story_GSP", "", 0, "{TAB}")
Sleep(400)
Controlsend 01/01/2009 - GW Exploits, Hacks, Bots, Tools & Macros - 4 Replies Hiho,
ich würde gerne wissen, ob es eine Möglichkeit gibt den Slash bzw "^" als String und nicht als Strg-Druck an ein Fenster via Controlsend zu schicken.
In meinem Script lass ich mir den String einer Inputbox in ne Variable schreiben und schick den dann an die GW-Fenster.
Das geht Fehlerfrei, nur leider gehen Ausrufezeichen etc nicht mit Controlsend -.-
Pls help me^^
ty im Voraus!