Armin が既に書いたように、#Persistent を使用します。また、特定のアプリケーションがフォーカスされているときにのみアクティブになるホットキーを作成する場合は、次のようにします。この場合、スクリプトは起動時に実行されなくなりますが、ホットキーを押したときにのみ実行されます...
#Persistent
#SingleInstance
#IfWinActive, ahk_class TMainForm
!M::
sleep 2000
Send Now is the time
Return
!n::SoundBeep, 500, 500
!o::MsgBox, OK
#IfWinActive
このように、3 つの (ダミー) ホットキーはすべて、アプリケーションがフォーカスされている場合にのみアクティブになります! 別のアプリケーションに同じホットキーを定義できます。コードを繰り返すだけで、#IfWinActive, ahk_class TMainForm
行内の別のアプリケーションの場合は ID を使用できます。
アプリケーションがアクティブなときに 2 秒ごとにメッセージを送信する場合は、次のようにします。
#Persistent
#SingleInstance
SetTimerMatchMode, CheckApp, 2000
Return
CheckApp:
IfWinActive, ahk_class TMainForm
{
Send, Now is the time
}
Return
アプリケーションを (再) アクティブにする (フォーカスを入れる) たびに (2 秒ごとではなく) スクリプトを実行する場合は、次を使用します。
#Persistent
#installKeybdHook
#SingleInstance
Gui +LastFound
hWnd := WinExist()
DllCall( "RegisterShellHookWindow", UInt,Hwnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
Return
ShellMessage( wParam )
{
If (wParam = 4)
{
IfWinActive ahk_class TMainForm
{
Send, Now is the time
}
}
}
Return