AutoHotKeyで条件付きでホットキーを定義する方法はありますか?物理キーボードが異なるマシンごとに、異なるキーボードマッピングを実行したいと思います。
これが私がやりたいことです:
RegRead, ComputerName, HKEY_LOCAL_MACHINE, System\CurrentControlSet\Control\ComputerName, ComputerName
If ( ComputerName = BDWELLE-DIM8300 )
{
#Include %A_ScriptDir%\Mappings-BDWELLE-DIM8300.ahk
}
OR
RegRead, ComputerName, HKEY_LOCAL_MACHINE, System\CurrentControlSet\Control\ComputerName, ComputerName
If ( ComputerName = BDWELLE-DIM8300 )
{
LWin::LAlt
[more hotkey definitions that only apply to this machine]
}
ただし、AHKはIfステートメントを解釈する前にHotkey定義と#Includeステートメントを解析するため、Hotkeys定義(#Includeに埋め込まれているかどうかに関係なく)はIf条件を尊重しません。
AutoHotKey_Lを教えてくれてありがとう!
ホットキーを条件付きで定義する方法の具体例はありますか?構文は非常に紛らわしいです。これが私が試していることです(AutoHotKey.exeの代わりにAutoHotKey_L.exeをインストールした後):
RegRead, ComputerName, HKEY_LOCAL_MACHINE, System\CurrentControlSet\Control\ComputerName, ComputerName
#If ( ComputerName = BDWELLE-DIM8300 )
LWin::LAlt
しかし、それはうまくいかないようです...
これは古い質問ですが、今朝やらなければならなかったので、AutoHotkey_Lでこれを機能させました。
#If %computername% = work-computer
^h::MsgBox Work
#If
#If %computername% != work-computer
^h::MsgBox Not at Work
#If
重要な点は、コンピュータ名引用符で囲まれていないであるということです。それはかなり長い間私をつまずかせました。
それが誰かを助けることを願っています!
Lifehackerは、さまざまなコンピューターで使用するスクリプトを選択するのに役立つ AutoInclude というAHKスクリプトを発表しました。これは、スクリプトをテキストで1つのファイルに連結し、その1つのファイルを実行することで実現されます。
免責事項:私はそれを使用していません。
これを解決するには、共有ホットキーの共通スクリプトを含む、PC固有のホットキーを含むPCごとに個別のスクリプトを作成し、個別のスクリプトを使用して適切なスクリプトを起動します。
Common.ahk
; Common hotkeys go here
[PC名] .ahk
#Include %A_ScriptDir%\Common.ahk
; PC-specific hotkeys go here
Load.ahk
If FileExist(A_ScriptDir . "\" . A_ComputerName . ".ahk")
Run "autohotkey.exe" %A_ScriptDir%\%A_ComputerName%.ahk
Else
Run "autohotkey.exe" %A_ScriptDir%\Common.ahk
ホットキーコマンド を見てください-スクリプト内のどこでも動的にHKを作成または変更できます。
Autohotkey L ショットを与えることをお勧めします。特に、#Ifステートメントがあります。これは#IfWinActiveと同じように機能しますが、任意のコードに対して機能します。