• ベストアンサー

他プロセスのウィンドウをいじりたい

他プロセスのウィンドウをいじりたい 自分でマクロソフトを作ろうとしたのですが、 自分のプロセス内のウィンドウにしかアクセスできないことに気づきました。 やりたいことは  ・他のプロセスのウィンドウのメッセージプロシージャをすりかえて   他のプロセスのウィンドウに送られたメッセージを見たりすること  ・マウスをクリックさせたり、キーボードを押したりすること です。要するに他のプロセスのウィンドウを自分の操り人形のようにしたいわけです いろいろ調べたけれど自分のDLLを読み込むように他のプロセスのメモリを 書き換える方法など、怪しいものしかなかったので 他の方法を教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

SetWindowsHookEx というフックを使います。 フックするタイミングはいろいろありますので、 必要な個所をフックします。但し、「閉じる」等の イベントとマウス系のイベントはフックタイプが 異なるなど、通常のウィンドウプロシージャとは 違い、分類を掌握しておく必要があります。 また、特定のプロセスだけを選べないので、全ての ウィンドウをフックすることになります。従って、 マシンの性能が劣化する危険があります。 詳しくは上記のAPIをキーワードに調べてください。 >他のプロセスのウィンドウのメッセージプロシージャをすりかえて これはできません。プロテクションモードのCPU ではプロセス毎のメモリ空間は保護されているので、 ポインタが同じ値を示してもメモリ空間は別物に なっています。また、コード部は変更することが できません。書き込もうとすると例外が発生します。

Sweet_potato
質問者

お礼

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

その他の回答 (1)

  • YUI_AI
  • ベストアンサー率45% (303/661)
回答No.1

http://social.msdn.microsoft.com/Forums/ja-JP/vcgeneralja/thread/bf121232-1499-49bb-993f-ccc37b4d9401/ http://dobon.net/vb/bbs/log3-20/12272.html 上記に近い事がやりたいとの認識で宜しいでしょうか? 基本的には操作したアプリケーションのウィンドウハンドルを取得する FindWindow(WIN API) 取得したハンドルに対してPostMessage、SendMessageでメッセージでWindowメッセージを送信してあげれば可能かと思います。

関連するQ&A