|
You last visited: Today at 21:48
Advertisement
ControlSend Problem
Discussion on ControlSend Problem within the AutoIt forum part of the Coders Den category.
11/08/2010, 21:22
|
#31
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Belur
Hey. Mal wider Richtung Topic etwas:
Hatte grad in der dt. Hilfe etwas zu ControlSend nachgelesen und bin auf diesen Ausschnitt gestoßen:
PHP Code:
$handle = WinGetHandle
ControlSend($handle, "", "", " AbCdE")
Mir gehts eigentlich darum, dass in dem ControlSend Befehl als Title das $handle angeben wird.
Ist das also möglich anstatt den Titel des Fensters nur den Handle anzugeben.
Würd mir nen ganzen Schritt weiterhelfen. =)
Lg
|
also im 2ten post oder so hatte ich doch schon das hier geschrieben:
Quote:
Originally Posted by lolkop
senden kannste mit controlsend.
einfach statt titel das handle in die funktion und text leer lassn.
das handle bekommste per wingethandle oder controlgethandle, bzw winlist, wenn du von allen clients die handles einlesen willst
|
|
|
|
11/09/2010, 15:45
|
#32
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Hab das mal wider mit dem Notpad getestet.
Allerdings will der nicht so ganz. Hab als kleinen Test obs überhaupt klappt geschrieben:
PHP Code:
$handle = WinGetHandle("Unbenannt - Editor")
Sleep(5000)
ControlSend($handle, "","","!{F4}")
Nach meinem Verstädnis sollte sich eigentlich nach 5 Sekunden das Notepad schließen.
Allerdings schließt der immer das aktive Fenster.
Weiß jmd woran das liegt? Muss man das $handle irgendwo speichern, damit der an das Fenster mit dem jeweiligen handle sendet oder was ist falsch?
|
|
|
11/09/2010, 15:57
|
#33
|
elite*gold: 0
Join Date: Feb 2009
Posts: 542
Received Thanks: 112
|
WinKill("[CLASS:Notepad] ", "")
|
|
|
11/09/2010, 18:32
|
#34
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Quote:
Originally Posted by maxi39
WinKill("[CLASS:Notepad] ", "")
|
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 ...)
Vllt weiß da jmd weiter.
|
|
|
11/09/2010, 19:22
|
#35
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
guck dir dochmal in der autoit hilfe an, was alles als "titel" akzeptiert wird.
du kannst allgemein immer handles einsetzen, wenn nach titeln gefragt ist.
|
|
|
11/09/2010, 19:29
|
#36
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Reicht es wenn man sich das Handle vorher über einen Befehl geholt hat, oder muss das in irgendeiner InputBox oder so gespeichert werden?
|
|
|
11/09/2010, 19:33
|
#37
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
o0
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.
Code:
$wHnd = WinGetHandle(...)
bzw
$wHnd = ControlGetHandle
geben dir die handles zurück mit denen du arbeiten kannst.
|
|
|
11/09/2010, 20:11
|
#38
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Habs mal mit dem Game direkt ausprobiert. Da klappts komischerweise. Ich weiss nicht warum beim Notepad nicht richtig ging. Spielt auch keine Rolle.
Weiss erstmal alles was ich zur Zeit brauche. Danke euch allen.
|
|
|
11/09/2010, 20:15
|
#39
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
ein spiel würde ich immer über ProcessClose schließen =)
|
|
|
11/09/2010, 20:37
|
#40
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
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.
Freue mich über jede Hilfe.
|
|
|
11/09/2010, 20:59
|
#41
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
wenn du eine schleife am laufen hast...
Code:
While 1
;aktion x
WEnd
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.
|
|
|
11/09/2010, 21:08
|
#42
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Quote:
Originally Posted by lolkop
Code:
While 1
;aktion y
While 1
;aktion x
WEnd
WEnd
|
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??
Lg
|
|
|
11/09/2010, 21:49
|
#43
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
was glaubst du denn was:
Code:
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.
|
|
|
11/10/2010, 16:25
|
#44
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Okay. Das klappt. =)
Hab nur das Problem:
PHP Code:
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.
Immer wird nur C gesendet. Weiß jmd warum?
|
|
|
11/10/2010, 16:56
|
#45
|
elite*gold: 9
Join Date: Dec 2009
Posts: 1,071
Received Thanks: 819
|
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.
|
|
|
 |
|
Similar Threads
|
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!
|
All times are GMT +1. The time now is 21:48.
|
|