Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 21:48

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

Advertisement



ControlSend Problem

Discussion on ControlSend Problem within the AutoIt forum part of the Coders Den category.

Reply
 
Old 11/08/2010, 21:22   #31
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by Belur View Post
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 View Post
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
lolkop is offline  
Thanks
1 User
Old 11/09/2010, 15:45   #32
 
Belur's Avatar
 
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?
Belur is offline  
Old 11/09/2010, 15:57   #33
 
elite*gold: 0
Join Date: Feb 2009
Posts: 542
Received Thanks: 112
WinKill("[CLASS:Notepad] ", "")
maxi39 is offline  
Thanks
1 User
Old 11/09/2010, 18:32   #34
 
Belur's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
Quote:
Originally Posted by maxi39 View Post
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.
Belur is offline  
Old 11/09/2010, 19:22   #35
 
lolkop's Avatar
 
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.
lolkop is offline  
Thanks
1 User
Old 11/09/2010, 19:29   #36
 
Belur's Avatar
 
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?
Belur is offline  
Old 11/09/2010, 19:33   #37
 
lolkop's Avatar
 
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.
lolkop is offline  
Thanks
1 User
Old 11/09/2010, 20:11   #38
 
Belur's Avatar
 
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.
Belur is offline  
Old 11/09/2010, 20:15   #39
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
ein spiel würde ich immer über ProcessClose schließen =)
lolkop is offline  
Old 11/09/2010, 20:37   #40
 
Belur's Avatar
 
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.
Belur is offline  
Old 11/09/2010, 20:59   #41
 
lolkop's Avatar
 
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.
lolkop is offline  
Thanks
1 User
Old 11/09/2010, 21:08   #42
 
Belur's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
Quote:
Originally Posted by lolkop View Post

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
Belur is offline  
Old 11/09/2010, 21:49   #43
 
lolkop's Avatar
 
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.
lolkop is offline  
Thanks
1 User
Old 11/10/2010, 16:25   #44
 
Belur's Avatar
 
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?
Belur is offline  
Old 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.
.Infinite is offline  
Thanks
1 User
Reply


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


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.