• ベストアンサー

キーボードでのマウスエミュレート

キーボードをつかってマウスを操作するプログラムを作成しています。 mouse_event関数を使ってマウスの移動及びクリックをエミュレートすることには成功したのですが、 特定のウィンドウ(デバイスマネージャ、システムのプロパティなど)がフォアグラウンドになっているときに動作してくれません。 どのような原因が考えられますでしょうか? またこれに対する解決策があったら教えてください。 <開発環境> Windows 7 Professional Visual C++ 2008 EE

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

  • ベストアンサー
  • BLK314
  • ベストアンサー率55% (84/152)
回答No.3

Vista以降では「キーロガー」等に対抗する為 グローバルフック出来なくなった模様です。 http://www.geocities.jp/muyou_bou/textock-vista.html UAC解除で対応できる可能性はありますが、 セキュリティと天秤にかけて慎重な検討ですね。 あなた専用のマシンでネットに接続されていない マシンでのみ実行させるとか・・・・

kerokk
質問者

お礼

ご回答ありがとうございます。 そうだったのですか! 長い間悩まされていたのでとてもすっきりしました。 UAC解除も検討してみようかと思います。

その他の回答 (2)

回答No.2

その"特定のウィンドウ"が作成されたプロセスが管理権限で動作しているんじゃないでしょうか? UACの関係でグローバルフックが制限されている感じがします。

  • BLK314
  • ベストアンサー率55% (84/152)
回答No.1

本当に「特定のウィンドウ」のみでしょうか? メモ帳がフォアグラウンドになっているときには、 キーボードでエミュレート出来ていますか? 単にフォーカスがないから キーボードのメッセージが届かないという話ではありませんか?

kerokk
質問者

お礼

ご回答ありがとうございます。 説明不足ですいません。dllを作成してグローバルフックを行っているのでたとえメモ帳がフォアグラウンドになっていても正常に動作してくれます。

関連するQ&A