土曜の昼、学校帰りの昼メシの思い出

タイトル通り、他のアプリケーションを左クリックしたときのイベントを得たいのですが、うまくいきません。

具体的には、DirectXを使って動いているフルスクリーンのアプリケーションを左クリックしたときにイベントを得るということです。

http://tokyo.cool.ne.jp/kanain/APIHTM/GetMsg.html

こちらで紹介されている方法でVBのフォームを左クリックしたときのイベントは得ることができました。

そして、他のアプリケーションのハンドルを取得して引数に指定してみましたが、うまくいきません。

分かりにくい説明ですみません^^;

何が間違っているのでしょうか。自分なりに作ってみたソースを記述した方がよいでしょうか?また、全く違う方法でも構わないので他のアプリケーションを左クリックしたときのイベントを得る方法がありましたら教えてください。

バージョン:VB6.0

A 回答 (2件)

ここよりの引用


http://www.microsoft.com/JAPAN/developer/library …
「Windows 95/98:hWnd パラメータで指定したウィンドウが SetWindowLong 関数を呼び出したスレッドと同じプロセスに属していないと、SetWindowLong 関数は失敗します。」


他プロセスのイベントの取得はグローバルフックを使えばできますが、VBだけでは無理っぽいですね。

http://www.geocities.co.jp/SiliconValley/7406/ti …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
SetWindowLongでは別プロセスのイベントは取得できなかったんですね。

>他プロセスのイベントの取得はグローバルフックを使えばできますが、VBだけでは無理っぽいですね。

VBではできないんですか・・・。残念。
今回はマウスクリックではなくGetAsyncKeyStateとタイマーでキーボード入力からイベントを取得して代用することにしたいと思います。

お礼日時:2004/03/14 00:22

#1の言うように


>SetWindowsHookEx
で、Windows全てのイベントを取得する方法のほかに、

95系
CreateFileMapping/MapViewOfFile
NT系
VirtualAllocEx/WriteProcessMemory/ReadProcessMemory
で特定ハンドルに対するイベントは取得できます。


参考URL(VCですが)
http://techtips.belution.com/ja/vc/0001/
で、別プロセスのリストビュー、ツリービュー(簡単に言ってしまえばエクスプローラ)のイベントを取得いたしました。VBにコンバートするにはチト厄介ですが、可能です。

もし完全に別プロセスのイベントが取得できないと言うのであれば、VisualStudio付属のアプリケーション「Spy++」はどうやってんだ?ってことになります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

参考URL拝見しましたが難しくてよく分かりませんでした(汗

今回はマウスクリックのイベントを取得するのではなくキーボード入力からの取得で代用しようと思います。

お礼日時:2004/03/14 00:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報