事象
AutoHotkey2.0をインストールしたら、Drag&Dropでahkスクリプトに別のファイルを渡すことが出来なくなった。
原因
勝手に2.0が適用されて、動かないスクリプト出たら怖いから、プログラムから開くで.ahkファイルは、1.0のAutoHotkeyU32.exeを使うように手動設定していた。
AutoHotkey2.0からは、.ahkファイルはAutoHotkeyUX.exeに対して、launcher.ahkを介して実行するように関連付けしないとうまく動かないみたい。AutoHotkeyUX.exeはv2.0形式の.ahkファイルしか実行できないが、launcher.ahkに.ahkファイルを渡す形で、AutoHotkeyUX.exeを実行すると、開いたscript構文が2.0なら2.0、違うなら1.0のahkファイルとして認識され、それぞれの実行ファイルで実行されるみたい。
AHKは1.0の中でも、Unicode 32bit, Unicode 64bit, ANSI 32bitの3種類あるが、これらの選択は、2.0をインストールすると、スタートメニューにAutoHotkey Dashというショートカットが出来てるので、これを開き、Launcher settingsを開くと、v1.0とv2.0でそれぞれどのexeを使うか設定できる。
結論としては、launcher.ahkを介した関連付けが必要なため、プログラムから開くからの単純なexeへの関連付けではダメそう。
対応
結論としては、AutoHotkey2.0をインストールする時は、素直にインストーラーでインストールするのが良さげ。インストーラーでインストールすれば、勝手にうまく関連付けやってくれるみたい。(寧ろそうしてないとトラブル。。。)
また、v2.0のインストール先は1.0と全く同じだが、2.0はv2というフォルダが作成されてインストールされるので、1.0をインストールしてても、気にせず2.0をインストールして大丈夫。
調べたことメモ
AutoHotkey2.0はどの実行ファイルを親として動いてるのかと思い、スタートメニューに出来てた下記ショートカットのパスを見てみた。
AutoHotkey Dash
“C:\Program Files\AutoHotkey\UX\AutoHotkeyUX.exe” “C:\Program Files\AutoHotkey\UX\ui-dash.ahk”
AutoHotkey Window Spy
“C:\Program Files\AutoHotkey\UX\AutoHotkeyUX.exe” “C:\Program Files\AutoHotkey\UX\WindowSpy.ahk”
確認すると、AutoHotkeyUX.exeというもので実行してるようだった。実際、このexeにui-dash.ahkとかをD&Dすると実行される。ではこれを関連付けすれば良いのかと思ったのだが、どうやらそうでは無いらしい。v1.0のコードのファイルをD&Dすると、下記の様に#NoEnvが無いというエラーが出てくる。
Error: This line does not contain a recognized action. Text: #NoEnv Line: 1 File: C:\Scripts\AutoHotkeyScript\test_v1.ahk The program will exit.
また、v1.0の.ahkファイルを右クリックして、プログラムから開くにカーソルを合わせると、「AutoHotkey Launcher」という項目が表示される。これが関連付けされてるものかとクリックすると、includeでエラーが出る。右クリック→プログラムから開く→別のプログラムを選択を押すと、「AutoHotkey Dash」という表示の項目がいる。表示が違うから別物なのかなと思いつつ押してみるが、「AutoHotkey Launcher」と同じエラー。どうも、同じものではあるみたい。
しかしながら、単純にv1.0のahkファイルをダブルクリックすると、普通に開く。
色々見てると、launcher.ahkというファイルが下記の場所にいた。
C:\Program Files\AutoHotkey\UX\launcher.ahk
このファイルに、D&Dすると、v1.0、v2.0問わず、どちらの.ahkファイルでも実行することが出来た。
AutoHotkey2.0でのコマンドラインからの実行方法は、下記の様にAutoHotkeyUX.exeに対して、launcher.ahkを挟んで実行するようになってるみたい。
AutoHotkeyUX.exe launcher.ahk [Switches] [Script Filename] [Script Parameters]
コメント