2

我将 AutoHotkey 用于我经常使用的各种文本,因此在签名或经常使用的邮件文本中,我还存储了一些代码片段以便快速使用。

其中一些热字串在 wordpad 或 ultraedit 等编辑器中运行良好,但在 eclipse(我的版本是 3.6.1)中,它们不能正确删除热字串。

非常简单的例子:

  • 我输入#echo
  • 我得到一个变量提示
  • 我提供字符串 $myVar
  • 字符串被插入到当前文件中

如前所述,这在许多编辑器中都可以正常工作,但在 eclipse 中却不行,其中部分热字符串 - 例如#ec - 保留在输出前面,热字符串没有完全删除。奇怪的是,有时它会留下 1 个字母,有时会留下 3 个字母,没有任何明显的逻辑。

在我的 AutoHotkey 文件 foo.ahk 我有一些这样的代码:

::#echo::
InputBox, VAR, User input, Please enter the variable VAR., , 320, 130
SendInput,
(
<?php echo(%VAR%); ?>
)
Return

作为 AutoHotkey 的新手,我之前遇到了一些其他问题,我可以解决,所以它们不应该是所描述问题的根源。

  • 带有特殊字符(如德语变音符号)的脚本必须以 UTF8 编码
  • 脚本或编译脚本必须以管理员身份运行

我不知道日食问题的原因可能是什么,感谢任何提示。

4

2 回答 2

1

我自己也试过了,看到了同样的行为。对我来说,切换到 SendPlay 模式而不是 SendInput 固定可以让事情完美运行。

添加行:

#Hotstring SP

就在您发布的代码之前,看看是否可以解决问题。

查看文档中的“#Hotstring”命令以获取更多信息,以及“Hotstrings and Auto-replace”的“选项”部分。

更新

好的,试试这个:

#Hotstring B0

::#echo::
SendInput, {Control Down}{Shift Down}{Left 2}{Control Up}{Shift Up}
InputBox, VAR, User input, Please enter the variable VAR., , 320, 130
SendInput,
(
<?php echo(%VAR%); ?>
)
Return

'#Hotstring B0' 行将阻止 AutoHotkey 自己执行退格。第一个 SendInput 行将发送 Ctrl-Shift-Left 两次以选择键入的“#echo”文本,然后将其替换为 InputBox 之后的第二个 SendInput。

它有点老套,您可能需要根据您的使用方式将“{Left 2}”中的数字更改为其他数字,但这对我来说也很好。

于 2011-03-15T11:07:05.057 回答
0

为什么要坚持热词?您可以改用奇怪的热键(例如Alt++ WindowsV

!#v::
InputBox, VAR, User input, Please enter the variable VAR., , 320, 130
SendInput,
(
<?php echo(%VAR%); ?>
)
Return
于 2012-04-20T06:52:41.843 回答