5

名前を取得して、事前に作成されたテキストのブロックに追加するスクリプトを作成しようとしています。

基本的に、「emailDave」と記述し、Daveという名前をテキストの文字列に挿入して送信します。この方法でホットストリングを変更する方法がわかりません。

私は現在、InputBoxを使用して名前を要求し、その名前をテキストに挿入するメソッドを使用しています。これはデスクトップでは問題なく機能しますが、私はWindows 8を使用しており、いくつかの恐ろしい理由で、InputBoxがアプリ内(つまりデスクトップモード外)に表示されません。

InputBoxでこのガチョウの追跡を行う代わりに、「emailvsemailDave」と入力したテキストを使用して変数に影響を与える方法が必要であることを私は知っています。

とは言うものの、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 PoweredDynamicHotStringsというライブラリを使用できます。

そのリンクにあるファイルを、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

ホットストリングから「デイブ」を取り出します

msgbox, %name%テスト後、を必要な送信行    に置き換えます。

于 2013-03-20T18:04:37.920 に答える