2017-05-24 4 views
0

Ich schrieb ein Skript, das einige Tastendruck an meine Befehlszeile sendet. Die Werte kommen jedoch völlig durcheinander. Was könnten die Gründe sein? DieseControleSend senden seltsame Ausgabe Autohotkey

BlockInput, on 
WinGetActiveTitle, Title 
DetectHiddenWindows, on 
ControlClick, x660 y391, Notepad 
ControlSend, , {Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}, Notepad 
Sleep 30 
ControlSend, , 2, Notepad 
Sleep 30 
ControlSend, , echo stat_id: 78 : SETTING PRICE TO 2 toactivate: %Title% >> logs.txt{Enter} , ahk_exe cmd.exe 
ControlClick, x668 y640, Notepad 
ControlSend, , echo ACTION NEXT (after SETTING PRICE) >> logs.txt{Enter} , ahk_exe cmd.exe 
WinActivate, %Title% 
Send {Ctrl down}+{Ctrl up} 
Send {Ctrl down}+{Ctrl up} 
Send {Ctrl down}+{Ctrl up} 
Send {Ctrl down}+{Ctrl up} 
Send {Ctrl down}+{Ctrl up} 
BlockInput, off 
ExitApp 
Return 

ist ein Beispiel für Ausgabe:

at-idec; ho78 B: EFSOETRTEI SNGCR PERENIC ESH TOOOT 2 DOTNOEAC >T>I valotges;. tixqt 

echo ACTION NEXT (after SETTING PREICCEHO) >A>CT lioogn s.ntexxtt 
+0

war ich in der Lage das Problem zu lösen? – GroggyOtter

Antwort

3

Nicht wenige Dinge zu erwähnen

1) Sie sollten nicht Control verwenden Text zu einer cmd Aufforderung zu senden. Stattdessen sollten Sie Run, % Compsec verwenden. ComSpec ist nur eine Verknüpfung zu cmd.exe. Wenn Sie also Run, % Compsec tun, übergeben Sie einfach nur das, was neben der Eingabeaufforderung von cmd angezeigt wird. Beispiel für die Ausführung von ipconfig: Run, % ComSpec " /k ipconfig"

leicht zu erinnern, die verwenden wechseln, denken Sie daran, dass /k wird „halten Sie die Eingabeaufforderung öffnen, wenn es fertig ist“ und /c wird „es zu schließen, nachdem die Befehle ausgeführt haben“.

Stellen Sie außerdem sicher, dass Sie den Unterschied zwischen Expression und Nicht-Ausdruck verstehen. Die folgenden Codezeilen anders aussehen, aber jede Zeile macht genau das Gleiche:

Run, % ComSpec " /k ipconfig" 
Run, %ComSpec% /k ipconfig 

2) Statt {Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace} des Schreibens, sondern umfassen, wie oft Sie den Schlüssel wollen nach dem Schlüsselnamen repated aber vor dem geschweifte Klammer schließen. {Backspace 6}. Dies funktioniert für jeden Schlüssel.

3) BlockInput kann ein gefährlicher Befehl sein und normalerweise rate ich anderen, dies möglichst zu vermeiden. Wenn Sie ComSpec statt Control senden verwenden, entfernen Sie die Notwendigkeit, BlockInput zu verwenden.

4) Das Problem, das Sie anfangs hatten, hatte höchstwahrscheinlich damit zu tun, dass der Text zu schnell gesendet wurde. Senken Sie die Sendegeschwindigkeit mit SetKeyDelay.


Versuchen ersetzen diese:

ControlSend, , echo stat_id: 78 : SETTING PRICE TO 2 toactivate: %Title% >> logs.txt{Enter} , ahk_exe cmd.exe 

mit diesem:

Run, % ComSpec " /k echo stat_id: 78 : SETTING PRICE TO 2 toactivate: " Title " >> logs.txt"