Autohotkey 控件发送输出自动热键

Autohotkey 控件发送输出自动热键,autohotkey,Autohotkey,我编写了一个脚本,将一些击键发送到我的命令行。然而,这些价值观被完全搞砸了。原因可能是什么 BlockInput, on WinGetActiveTitle, Title DetectHiddenWindows, on ControlClick, x660 y391, Notepad ControlSend, , {Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}, Notepad Sleep 30 Control

我编写了一个脚本,将一些击键发送到我的命令行。然而,这些价值观被完全搞砸了。原因可能是什么

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将文本发送到cmd提示符。相反,您应该使用
Run,%Compsec
。ComSpec只是cmd.exe的快捷方式。因此,当您执行
运行时,%Compsec
实际上只是传递cmd提示符旁边的内容。运行ipconfig的示例:
Run,%ComSpec”/k ipconfig“

要轻松记住要使用哪个开关,请记住
/k
将“在命令完成时保持命令提示符打开”,而
/c
将“在命令运行后关闭它”

此外,请确保您理解表达式和非表达式之间的区别。 以下代码行看起来不同,但每一行的作用完全相同:

Run, % ComSpec " /k ipconfig"
Run, %ComSpec% /k ipconfig
2) 不要写
{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}
,而是要包括在键名之后但在关闭的花括号之前重新绘制键的次数<代码>{Backspace 6}。这适用于任何键

3) BlockInput可能是一个危险的命令,通常我建议其他人尽可能避免使用它。通过使用Run ComSpec而不是control send,您无需使用BlockInput

4) 您最初遇到的问题很可能与文本发送速度过快有关。使用降低发送速度


尝试替换此:

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"

有很多事情要提

1) 您不应该使用controlsend将文本发送到cmd提示符。相反,您应该使用
Run,%Compsec
。ComSpec只是cmd.exe的快捷方式。因此,当您执行
运行时,%Compsec
实际上只是传递cmd提示符旁边的内容。运行ipconfig的示例:
Run,%ComSpec”/k ipconfig“

要轻松记住要使用哪个开关,请记住
/k
将“在命令完成时保持命令提示符打开”,而
/c
将“在命令运行后关闭它”

此外,请确保您理解表达式和非表达式之间的区别。 以下代码行看起来不同,但每一行的作用完全相同:

Run, % ComSpec " /k ipconfig"
Run, %ComSpec% /k ipconfig
2) 不要写
{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}{Backspace}
,而是要包括在键名之后但在关闭的花括号之前重新绘制键的次数<代码>{Backspace 6}。这适用于任何键

3) BlockInput可能是一个危险的命令,通常我建议其他人尽可能避免使用它。通过使用Run ComSpec而不是control send,您无需使用BlockInput

4) 您最初遇到的问题很可能与文本发送速度过快有关。使用降低发送速度


尝试替换此:

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"

如果您确实希望发送到控制台,则有以下替代方案:

  • 控制台结束()
  • Windows 10:您可以尝试粘贴文本,然后发送输入旧版Windows-需要额外的软件:我发现Clink是可靠的,因为安装后您可以
    发送^v

如果您确实希望发送到控制台,则有以下替代方案:

  • 控制台结束()
  • Windows 10:您可以尝试粘贴文本,然后发送输入旧版Windows-需要额外的软件:我发现Clink是可靠的,因为安装后您可以
    发送^v

我能解决您的问题吗?我能解决您的问题吗?