我希望我的脚本能够读取包含intiger的文本文件,并通过键盘写出这个数字,而实际上却触摸它,但是因为没有软件,所以我很难理解autohotkey。拥有一些C#知识这就是我所拥有的:
FileRead, OutputVar, answertext.txt
sleep, 3000
;MyString = %OutputVar%
MyString = 16807
Loop, Parse, MyString
{
if (%A_LoopField% = -)
{
Send, {SC00C}
}
if (%A_LoopField% = 0)
{
Send, {SC00B}
}
if (%A_LoopField% = 1)
{
Send, {SC002}
}
if (%A_LoopField% = 2)
{
Send, {SC003}
}
if (%A_LoopField% = 3)
{
Send, {SC004}
}
if (%A_LoopField% = 4)
{
Send, {SC005}
}
if (%A_LoopField% = 5)
{
Send, {SC006}
}
if (%A_LoopField% = 6)
{
Send, {SC007}
}
if (%A_LoopField% = 7)
{
Send, {SC008}
}
if (%A_LoopField% = 8)
{
Send, {SC009}
}
if (%A_LoopField% = 9)
{
Send, {SC00A}
}
}
exit
现在这段代码开始了,但它始终是0,而不是其他,如果MyString = -1234,则会出错。
答案 0 :(得分:0)
我将在这里提供一些关于改进AutoHotkey脚本的说明,以及它的修订版本。
你的'如果'对于大多数字符串,行应该是这样的,带双引号,没有百分号:
if (A_LoopField = "a")
对于数字,双引号是可选的:
if (A_LoopField = "1")
if (A_LoopField = 1)
但从根本上说,你的脚本只需几行:
FileRead, OutputVar, answertext.txt
sleep, 3000
;MyString = %OutputVar%
MyString = 16807
Send {Raw}%MyString%
您可能更喜欢包含密钥延迟,以减慢文本的发送速度:
MyString = 16807
SetKeyDelay, 500
Send {Raw}%MyString%
发送文本的其他方法可能是:
Clipboard := MyString
SendInput ^v
或者在不使用剪贴板的情况下将文本插入编辑控件(例如记事本中):
Control, EditPaste, %MyString%, Edit1, ahk_class Notepad
或者在不使用剪贴板的情况下再次设置编辑控件的全部内容:
ControlSetText, Edit1, %vText%, ahk_class Notepad