板 1- 前 次 新 レス
管理人の雑記
[124]管理人 ★:2009/03/31(火) 08:44:17
「AutoHotkeyを廃れさせるページだったところ」にて、メモリの直接操作とネイティブコードの呼び出し機能に特化したJavaScript 1.8処理系を公開。
lukewarm.me.land.to
WSHとAutoHotkeyを気分によって使い分けるのに嫌気がさしたので作ることに。
Firefoxで使われているJSAPIなる物を使う。
JSAPIだけをビルドする方法が分からず、何故かFirefox全体をビルドする羽目に。
しかも、出来上がったDLLがMSVCR90.DLLに依存していて、テスト用の環境で動作しない。
Firefox3.1betaに同梱されていたDLLに差し替えたら起動出来た。
とりあえず、DLL関数の呼び出しとコールバック関数の生成、メモリの確保・読み書き用の関数を作成。
一部AutoHotkeyのソースを参考にした。
とりあえず、EnumWindows関数を呼び出してコールバックを受け付け、可視ウィンドウのタイトルを出力するという処理が動作するようになった。
JavaScriptは動的に関数を生成出来るので、いちいちラッパー関数を定義したりしなくても、普通の関数と同じ感覚で呼び出せるのが便利だ。
しかし、Unicode対応でないAPIで日本語を扱うと文字化けする。
どうやら、JSAPIの内部文字コード(UTF-16)からANSI文字列への変換時に、Shift_JISではなくlatin-1として変換されている模様。
修正箇所が多くて面倒くさいが、WideCharToMultiByteで変換するようにすれば解決するだろうか。
前 次