ControleSend发送奇怪的输出Autohotkey
问题描述:
我写了一个脚本,发送一些按键到我的命令行。然而,价值观已经完全搞砸了。原因是什么?ControleSend发送奇怪的输出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
这是输出的一个例子:
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
答
不少东西提
1)你不应该使用controlsend发送文本到命令提示符。相反,你应该使用Run, % Compsec
。 ComSpec只是cmd.exe的快捷方式。所以当你做Run, % Compsec
时,你只是传递了cmd提示符旁边的任何内容。例如运行IPCONFIG:Run, % ComSpec " /k ipconfig"
轻易记住它切换使用,请记住,/k
将“保持命令提示符打开的时候,它的完成”和/c
将“关闭后的命令已经运行”。
此外,请确保您了解Expression与非表达式之间的区别。 下面的代码行看起来不同,但每一行做同样的事情:不是写{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}
的
Run, % ComSpec " /k ipconfig"
Run, %ComSpec% /k ipconfig
2),相反,包括有多少次你想要的键名之后,但在该repated关键关闭大括号。 {Backspace 6}
。这适用于任何键。
3)BlockInput可能是一个危险的命令,通常我建议其他人尽可能避免它。通过使用Run ComSpec而不是Control send,可以删除任何需要使用BlockInput的情况。
4)您最初遇到的问题很可能与文本发送太快有关。用SetKeyDelay降低发送速度。
尝试更换此:
ControlSend, , echo stat_id: 78 : SETTING PRICE TO 2 toactivate: %Title% >> logs.txt{Enter} , ahk_exe cmd.exe
有了这个:
Run, % ComSpec " /k echo stat_id: 78 : SETTING PRICE TO 2 toactivate: " Title " >> logs.txt"
答
如果你想发送到控制台也可以选择:
- ConsoleSend() https://autohotkey.com/board/topic/25446-consolesend/
-
Windows 10:您可以尝试粘贴文本,然后发送回车。 旧的Windows版本 - 需要额外的软件:我觉得作为碰杯你可以
Send ^v
安装它https://mridgers.github.io/clink/
当时我能够解决您的问题后,是可靠的? – GroggyOtter