5

我正在尝试创建一个脚本,该脚本将采用名称并将其添加到预先编写的文本块中。

本质上,我想写“emailDave”并将名字 Dave 插入到一个文本字符串中,然后发送。我只是不确定如何以这种方式修改热字符串。

我目前正在使用一种方法,该方法使用 InputBox 询问名称并将名称插入文本中。这在桌面上工作得很好,但我使用的是 Windows 8,由于某些可怕的原因,InputBox 不会出现在应用程序内(即在桌面模式之外)。

我知道必须有一种方法可以使用我输入的文本“email vs emailDave”来影响变量,而不是让我用 InputBox 进行这种鹅追逐。

也就是说,如果有人知道在 Windows 8 应用程序(尤其是邮件)中显示 InputBox 的解决方法,那将非常有帮助。

当前脚本在桌面上运行良好但不能在应用程序中运行:

::email::
InputBox, thename, Enter the name, What is the name
SendInput Hi %thename%,{enter}{enter}Sample text.{enter}{enter}Thanks,{enter}Zach
Return

有没有办法让这样的工作?

::email{%thename%}::
SendInput Hi %thename%,{enter}{enter}Sample text.{enter}{enter}Thanks,{enter}Zach
Return
4

3 回答 3

1

他的呢:

:?*:email::
Input, thename, v,{Enter}{Space}
If (thename = "")
{
    SendInput, {Bs}email `
    Return
}
StringLen,MyLen, thename
MyLen++
SendInput {BackSpace %MyLen%}Hi +%thename%,{Enter 2}Sample text.{Enter 2}Thanks,{Enter}Zach
Return

通过在名称字符串前面添加 +,第一个字母将大写。

输入:“emailrobert{Enter}”或“emailRobert{Enter}”都给出:

嗨罗伯特,

示例文本。

谢谢,
扎克

和 email{Space} 将给 email{Space}。

于 2013-03-19T18:45:32.820 回答
1

如果你真的想避免使用 InputBox,我有一个更复杂的解决方案给你。您可以使用名为RegEx Powered Dynamic HotStrings的库。

将该链接处的文件保存到包含 AutoHotkey.exe 的文件夹内的 lib 文件夹中(如有必要,请创建)。

在此示例中,您键入emailJohn后跟一个Space.

#Include lib\DynamicHotstrings.ahk

hotstrings("email(\w+)\s", "email")
Return

email:
    SendInput, Hi %$1%,{Enter 2}Sample text.{Enter 2}Thanks,{Enter}Zach
return
于 2013-03-19T19:01:46.420 回答
0
::email::
inputbox, name
msgbox, %name%
return

将“dave”从热门字符串中删除

测试后,将 替换为msgbox, %name%您想要的任何发送线路。   

于 2013-03-20T18:04:37.920 回答