うちのカレーにはこれが入ってる!って食材ありますか?

他プロセスのウィンドウをいじりたい
自分でマクロソフトを作ろうとしたのですが、
自分のプロセス内のウィンドウにしかアクセスできないことに気づきました。
やりたいことは

 ・他のプロセスのウィンドウのメッセージプロシージャをすりかえて
  他のプロセスのウィンドウに送られたメッセージを見たりすること

 ・マウスをクリックさせたり、キーボードを押したりすること

です。要するに他のプロセスのウィンドウを自分の操り人形のようにしたいわけです
いろいろ調べたけれど自分のDLLを読み込むように他のプロセスのメモリを
書き換える方法など、怪しいものしかなかったので
他の方法を教えてください

A 回答 (2件)

SetWindowsHookEx というフックを使います。


フックするタイミングはいろいろありますので、
必要な個所をフックします。但し、「閉じる」等の
イベントとマウス系のイベントはフックタイプが
異なるなど、通常のウィンドウプロシージャとは
違い、分類を掌握しておく必要があります。
また、特定のプロセスだけを選べないので、全ての
ウィンドウをフックすることになります。従って、
マシンの性能が劣化する危険があります。
詳しくは上記のAPIをキーワードに調べてください。

>他のプロセスのウィンドウのメッセージプロシージャをすりかえて
これはできません。プロテクションモードのCPU
ではプロセス毎のメモリ空間は保護されているので、
ポインタが同じ値を示してもメモリ空間は別物に
なっています。また、コード部は変更することが
できません。書き込もうとすると例外が発生します。
    • good
    • 0
この回答へのお礼

正しいやり方があったのですね。
あきらめかけていました。
これから試してみるところです。
本当にありがとうございます。

お礼日時:2010/08/25 14:38

http://social.msdn.microsoft.com/Forums/ja-JP/vc …

http://dobon.net/vb/bbs/log3-20/12272.html

上記に近い事がやりたいとの認識で宜しいでしょうか?


基本的には操作したアプリケーションのウィンドウハンドルを取得する
FindWindow(WIN API)

取得したハンドルに対してPostMessage、SendMessageでメッセージでWindowメッセージを送信してあげれば可能かと思います。
    • good
    • 0

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


おすすめ情報