web-dev-qa-db-ja.com

条件付きホットキーまたはAutoHotKeyに含める

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 

しかし、それはうまくいかないようです...

5
Bowen

これは古い質問ですが、今朝やらなければならなかったので、AutoHotkey_Lでこれを機能させました。

#If %computername% = work-computer
^h::MsgBox Work
#If

#If %computername% != work-computer
^h::MsgBox Not at Work
#If

重要な点は、コンピュータ名引用符で囲まれていないであるということです。それはかなり長い間私をつまずかせました。

それが誰かを助けることを願っています!

2
rossipedia

Lifehackerは、さまざまなコンピューターで使用するスクリプトを選択するのに役立つ AutoInclude というAHKスクリプトを発表しました。これは、スクリプトをテキストで1つのファイルに連結し、その1つのファイルを実行することで実現されます。

免責事項:私はそれを使用していません。

1
piyo

これを解決するには、共有ホットキーの共通スクリプトを含む、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
1

ホットキーコマンド を見てください-スクリプト内のどこでも動的にHKを作成または変更できます。

1
justme

Autohotkey L ショットを与えることをお勧めします。特に、#Ifステートメントがあります。これは#IfWinActiveと同じように機能しますが、任意のコードに対して機能します。

0
Phoshi