Moiz's journal

プログラミングやFPGAなどの技術系の趣味に関するブログです

任意のアプリからATOK用辞典(続、続)

今回は、ATOK連携ツールとAutoHotKeyのみを使って(Opera用検索ツールは使わない!)、任意のアプリからATOK用電子辞書での検索を行う方法についてまとめてみた。

検索ツールもいらない

前々回と、ATOK連携ツールがサポートしていないアプリケーションからATOK用の電子辞書にアクセスする方法を書いてきたが、どちらも中心になるのはOpera用検索ツール。
[f:id:uzusayuu:20110528110350j:image]

Opera, Firefox, 秀丸, Janeで電子辞典(for Windows)を使う
単体で起動すればATOK電子辞書のGUIフロントエンドにもなる非常に便利なソフトで、作者の方には感謝このうえないのだが、直接ATOK連携ツールにアクセスできればそれにこしたことはない。
なんとかならないかと思って調べてみたところ、ATOK連携ツールのDLLに直接アクセスすれば辞書検索ができる、という内容の投稿を見つけた。半信半疑でためしてみたところうまくいったので、こちらに書いておこう。(ただし、まだバグが取り切れていないので実用上はOpera用検索ツールを使う前回の方法のほうが優れている。)

AutoHotKeyスクリプト

注意点:これはあくまで私の環境での動作報告であり、同様の環境で必ず動作することを保証するものではありません。試される方は各ツールのマニュアルに従い、ご自分の判断でご使用ください

まずは準備として、ATOK、ATOK用電子辞書、ATOK連携ツールをインストールしておく。Opera用ツールは今回は必要ない。
私が使っているのはATOK2011、ロングマン英英、大辞林、など。
ATOK連携ツールの辞書検索機能を使うにはATOKEXIF.DLLを使用する。上記の投稿の僅かな情報を元に試行錯誤を行った結果、こんなスクリプトで辞書の検索ができた。

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; wfor new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
hModule := DllCall("LoadLibrary", "str", "C:\Program Files (x86)\JustSystems\ATOK\EXT\ATOKEXIF.dll")

!E::              ; Hot key is ALT+ E
Send ^c       ; Send ctrl+C
Sleep, 60     ; Wait for clipboard copy
word = %clipboard%
result := DllCall("ATOKEXIF\ATOKExt_ImmConfigureConsultDrmDicForIEW", "str", word)

最初の3行は自動挿入されたもの。4行目でDLLをロードしている。こちらのパスはATOK連携ツールがインストールされた場所を指定。
ホットキーには今回もALT+Eを指定。コピーコマンドを送信して、少し待った後で変数に代入。
最後の行で、DLLの検索機能にアクセスしている。

あとはスクリプトをセーブして、run scriptしてみる。スクリプトに問題が無ければ、文字を選択してAlt+Eを押すとATOK用電子辞書が立ち上がるはずだ。
何故かスクリプト実行後最初の呼び出しだけは妙なエラーメッセージがでたり、ウィンドウが他のウィンドウの下に表示されたりすることがあるが、一旦それらのウィンドウを閉じてもう一度呼び出すと正常に辞書検索ができる。また、Windows7では、一度他のウィンドウを選択すると、辞書ウィンドウが下に隠れてしまい、選択しても上にあがってこない。このあたりはおいおい直していこう。

まとめ

とうとうATOK連携ツールとAutoHotKeyだけで、ATOK用電子辞書にほぼどこからでもアクセスできるようになった。

感想

エディタで入力中、前に書いた部分の言葉の使い方が不安になったら選択Alt+E。非IEブラウザでWebを見ているときも、Alt+Eで検索と、とても便利。任意のアプリからの呼び出しがATOK電子辞典の標準機能になればいいのに。
あと、バグが取り切れてないのが残念だが、昨日インストールしたばっかりでこれだけのことができるAutoHotKeyはやはりとても便利。