AHKはかなり新しいので、MS WordタイプHELLOWでホットキー「1」を押すたびにAutohotkeyを使用したいのですが、同時に同じアプリ(MS Word)でキーの組み合わせ「11」(キー1を押す)が必要です。 BYEを入力するために2回非常に速く)、これは可能ですか? 「1」と入力するとAHKは「1HELLOW」と入力しますが、「11」と入力すると「11BYE」と入力しますか?同じスクリプトを実行できますが、代わりにF1を使用しますか?つまり、F1とキーシーケンスF1F1(F1が2回非常に速く押された)
これまで私はこれを試しました
~1::
;400 is the maximum allowed delay (in milliseconds) between presses.
if (A_PriorHotKey = "~1" AND A_TimeSincePriorHotkey < 400)
{
Msgbox,Double press detected.
}
else if (A_PriorHotKey = "~1" AND A_TimeSincePriorHotkey > 400)
{
Msgbox,Single press detected.
}
Sleep 0
KeyWait 1
return
しかし、最初にキーシーケンス11を押したとき(1をすばやく2回押したとき)は機能しますが、常に1つのキーしか認識しません。
~1::
if (A_PriorHotkey <> "~1" or A_TimeSincePriorHotkey > 400)
{
; Too much time between presses, so this isn't a double-press.
KeyWait, 1
return
}
MsgBox You double-pressed the 1 key.
return
これは、2つのホットキー(1と11)を取得するのにも役立ちません。
Advancedに感謝します。
SetTimerを使用すると最適に機能します。
; The following hotkeys work only if MS-Word is the active window:
#If WinActive("ahk_exe WINWORD.EXE") ; (1)
1::
if 1_presses > 0
{
1_presses += 1
SetTimer Key1, 300
return
}
1_presses = 1
SetTimer Key1, 300
return
Key1:
SetTimer Key1, off
if 1_presses = 2
SendInput, BYE
else
SendInput, HELLOW
1_presses = 0
return
F2:: MsgBox, You pressed F2 in MS-Word
; The following hotkeys work only if NOTEPAD is the active window:
#If WinActive("ahk_exe NOTEPAD.EXE")
1:: Send 2
F2:: MsgBox, You pressed F2 in NOTEPAD
#If ; turn off context sensitivity (= end of context-sensitive hotkeys)
; The following hotkeys work only if MS-Word or NOTEPAD is NOT the active window (because they are already defined in those programs):
1:: Send 3
F2:: MsgBox, You pressed F2 while MS-Word or NOTEPAD is NOT the active window
; The following hotkeys work in all windows (incl. MS-Word and NOTEPAD because they are NOT defined in those programs)
F3:: MsgBox, You pressed F3
Esc:: ExitApp
https://autohotkey.com/docs/commands/SetTimer.htm#Examples (例#3)
(1) #IfWin ディレクティブと同様に、 #If は状況依存のホットキーとホットストリングを作成し、位置にあります。スクリプト内で物理的にその下にあるすべてのホットキーとホットストリングに影響します。