【问题标题】:Autohotkey write text read from a text fileAutohotkey 写入从文本文件中读取的文本
【发布时间】:2017-01-04 14:00:20
【问题描述】:

我希望我的脚本读取一个包含一个 intiger 的文本文件,并通过键盘写这个数字,而我却没有真正触摸它,但是我有点难以理解自动热键,因为没有软件。拥有一些 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,就会出错。

【问题讨论】:

  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布代码并准确描述问题之前,我们无法有效地帮助您。具体来说,您需要提供完整的错误输出并将其与预期操作进行比较。同时将其减少到重现问题所需的最低限度。
  • 如上所述,请先尝试描述您的根本问题(您为什么这样做,您想用您的解决方案解决什么问题),然后再专注于您选择的策略遇到的问题。 (谷歌 X Y 问题)。不过总是愿意提供帮助!
  • 代码看起来非常复杂且不必要。为什么不简单地Send %MyString%,你为什么要发送硬件扫描码?

标签: autohotkey


【解决方案1】:

我将在这里提供一些关于改进 AutoHotkey 脚本的说明,以及它的修改版本。

对于大多数字符串,您的“if”行应该是这样的,带有双引号,并且没有百分号:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多