hspでグローバルフック(CALLWNDPROC)をするにはどうしたらよいでしょう。
検索してみたところ、特定のメッセージのみをフックするプラグインはあったのですが、
作ろうと思っているものは、すべてのメッセージをフックする必要があるので
自作しようと考えました。
自分で分かっていること・考えたことは、
・グローバルフックをするにはdllを作る必要がある。
・hspでdllを作ることはいまのところできない。
・vcでdllを作る。
・よくあるdllの場合にhsp側に処理を移すためにはSendMessageしなければならず
_メッセージフックの場合、自分のウィンドウを処理できないなど都合が悪いので
_hspのプラグインとして作り、code_getlb,code_callを使う
・フック関数内の変数は共有領域で初期化しなければならない。
・statはHSPCTX型、code_callはHSPEXINFO型、などの変数も共有領域で初期化する。
・hsp側では、mesboxへの更新をいちいちしていては間に合わないので、
_メッセージ取得時は文字列の更新のみを行い、SetTimerなどで1秒ごとに更新する。
です。
自分で作ってみた結果は、
・「〜の命令が〜のメモリを参照しましたが〜になることはありませんでした。」
_というようなメッセージが表示されてしまう。
・うまくいっても、応答なしになってしまう。
・ほかのプログラムまで終了してしまう。
です。
これは、可能なのでしょうか。
プラグイン側のみの共有領域では足りないのでしょうか。
SendMessageのほうがcode_callよりも良いのでしょうか
どのように組めばよいのでしょうか。
hspを超えたむずかしい質問かもしれませんが、どうかよろしくお願いします。
スクリプトのアップロードは必要でしょうか。必要であれば検討します。