ControlSend Frage/Hilfe

12/27/2013 22:15 flumio#1
Hallo Community,

Folgendes Problem, ich schaffe es nicht per ControlSend die Taste " / " erfolgreich abzuschicken.
Mein Ziel ist es in einen Chat eingeben zu lassen " /fenster 2 "

Was ich getestet habe ist,
Code:
ControlSend("Fenster", "", "", "+7") ;geht nicht
Code:
ControlSend("Fenster", "", "", "+{7}") ;geht einmalig, bei ner while schleife nur noch ne 7 statt /
Code:
ControlSend("Fenster", "", "", "{SHIFTDOWN}")
ControlSend("Fenster", "", "", "7")
ControlSend("Fenster", "", "", "{SHIFTUP}") ;geht auch nicht
Code:
$test = "+{7}"
ControlSend("Fenster", "", "", $test) ;geht als variable auch nicht
Ihr seht ich versuche einen Weg alleine zu finden, nach langen rescherchen frage ich jetzt doch mal auch euch.
Ich hoffe mir kann wer helfen.
12/28/2013 13:23 alpines#2
Hast du es überhaupt mal mit ControlSend("WinTitle", "", "", "/fenster 2") versucht?
Außerdem gehört das in die AutoIt Section -> moverequest.
Kann es sein das der Chat ein eigenes Control ist? Dann musst du das bei der Control ID angeben, oder es kann auch sein das du erstmal den Chat mit Enter öffnen musst, aber das ist sicherlich nicht dein Problem.
12/28/2013 18:05 flumio#3
Quote:
ControlSend("WinTitle", "", "", "/fenster 2")
wenn du mit WinTitle, das inaktive Fenster meinst in meinem Fall Diablo 2, sprich ("Diablo 2", "", "", "/fenster 2") das geht leider nicht.
Ergebnis wäre -> 7fenster 2

Vllt verwechsle/verstehe ich auch gerade nicht was du gezielt mit WinTitle meinst.

Evt. hilft es mehr wenn du mein Sorce Code mal siehst.
Code:
	While 1
	Global $iLoop = True
	If Not $iLoop Then ExitLoop
	ControlSend("Diablo 2", "", "", "{ENTER}")			
	Sleep(100)
	ControlSend("Diablo 2", "", "", "/fenster 1")
	Sleep(500)
	ControlSend("Diablo 2", "", "", "{ENTER}")
	Sleep(2000)												;fenster1
	If Not $iLoop Then ExitLoop
	WEnd
Wie ich schon im ersten Post erwähnt habe, hab ich es auf die anderen Möglichkeiten getestet. Mein Ergebnis ist so gut wie immer " 7fenster 1 "
Das einzigste ist bei,
ControlSend("Fenster", "", "", "+{7}")
ControlSend("Fenster", "", "", "fenster 1")
ect.
ist das erste Ergebnis " /fenster 1 " doch bei der Wiederholung der While-Schleife ist das nächste Ergebnis " 7fenster 1 "

Ich weis echt nicht mehr weiter >.<
12/28/2013 18:39 alpines#4
WinTitle war der Titel vom Fenster, den kenne ich ja nicht deshalb hab ich das da einfach hingeschrieben.

Du könntest mal das hier versuchen:
Code:
ControlSend("Diablo 2", "", "", "{ENTER}" & Chr(47) & "fenster 1{ENTER}")
Vielleicht musst du die Teile mit dem Enter in unterschiedliche ControlSends packen aber sollte passen.

/ ist im ASCII-Table Index 47, d.h. Chr(47) würde einen / returnen.
12/29/2013 07:53 flumio#5
Code:
ControlSend("Diablo 2", "", "", "{ENTER}" & Chr(47) & "fenster 1{ENTER}")
Ergebnis = 7fenster 1

Code:
ControlSend("Diablo 2", "", "", Chr(47))
Ergebnis = 7

Code:
ControlSend("Diablo 2", "", "", "{ENTER}")			
Sleep(100)
ControlSend("Diablo 2", "", "", Chr(47))
Sleep(100)
ControlSend("Diablo 2", "", "", "fenster 1")
Sleep(500)
ControlSend("Diablo 2", "", "", "{ENTER}")
Ergebnis = ( erstes mal, /fenster 1 - Wiederholtes, 7fenster 1 )

EDIT:

Code:
Opt("SendKeyDownDelay", 150)
ControlSend("Diablo 2", "", "", "{ENTER}" & Chr(47) & "fenster 1{ENTER}" & $smash)
Ergebnis = /fenster 1

wahrscheinlich lag es an Opt("SendKeyDownDelay", 150)

Ich bedanke mich trozdem bei deiner Hilfe, den ohne deinen Tipp wäre ich wohl nicht auf die Idee gekommen.

EDIT:

Zu früh gefreut, sobald ich raus Tabe ( alt+ tab ) und nicht mehr im Fenster bin,
ist das Ergebnis wieder 7fenster 1
Es lag auch nicht an "Chr(47)" es funktioniert auch "/fenster 1" wurde durch "SendKeyDownDelay" behoben.

Mein momentaner Stand,
Code:
Opt("SendKeyDownDelay", 150)
Global $iLoop = True

While 1
        Global $iLoop = True
	If Not $iLoop Then ExitLoop
	ControlSend("Diablo 2", "", "", "{ENTER}" & "/fenster 1{ENTER}" & $smash)
	If Not $iLoop Then ExitLoop
WEnd
Problem ist, sobald ich raus Tabe, ist Ergebnis = 7fenster 1

:(:(:(:(:(:(:(:(:(:(
12/29/2013 13:06 alpines#6
Wie schauts aus, wenn du 2x / sendest? Wenn das 2. richtig ankommt kannst du das davor ja löschen.
12/29/2013 13:27 flumio#7
das Problem ist schon behoben, er sendet es jetzt richtig /fenster 1
nur sobald ich das Fenster minimiere oder raus Tabe, schickt er nur noch 7fenster
da ich aber über Controlsende, dürfte das doch normalerweise nicht passieren.
vorhin ist es mir sogar passiert, das es sogar ein paar mal gecrashed ist.
12/29/2013 14:23 alpines#8
Dann versuch dich mal an SendMessage / PostMessage wenn es damit nicht geht.
Oder focus das Fenster und sends dann wenn das das Problem sein sollte.
12/30/2013 14:13 MrSm!th#9
#moved