- ベストアンサー
キーボードでのマウスエミュレート
キーボードをつかってマウスを操作するプログラムを作成しています。 mouse_event関数を使ってマウスの移動及びクリックをエミュレートすることには成功したのですが、 特定のウィンドウ(デバイスマネージャ、システムのプロパティなど)がフォアグラウンドになっているときに動作してくれません。 どのような原因が考えられますでしょうか? またこれに対する解決策があったら教えてください。 <開発環境> Windows 7 Professional Visual C++ 2008 EE
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Vista以降では「キーロガー」等に対抗する為 グローバルフック出来なくなった模様です。 http://www.geocities.jp/muyou_bou/textock-vista.html UAC解除で対応できる可能性はありますが、 セキュリティと天秤にかけて慎重な検討ですね。 あなた専用のマシンでネットに接続されていない マシンでのみ実行させるとか・・・・
その他の回答 (2)
- earlgrey00
- ベストアンサー率0% (0/1)
回答No.2
その"特定のウィンドウ"が作成されたプロセスが管理権限で動作しているんじゃないでしょうか? UACの関係でグローバルフックが制限されている感じがします。
- BLK314
- ベストアンサー率55% (84/152)
回答No.1
本当に「特定のウィンドウ」のみでしょうか? メモ帳がフォアグラウンドになっているときには、 キーボードでエミュレート出来ていますか? 単にフォーカスがないから キーボードのメッセージが届かないという話ではありませんか?
質問者
お礼
ご回答ありがとうございます。 説明不足ですいません。dllを作成してグローバルフックを行っているのでたとえメモ帳がフォアグラウンドになっていても正常に動作してくれます。
お礼
ご回答ありがとうございます。 そうだったのですか! 長い間悩まされていたのでとてもすっきりしました。 UAC解除も検討してみようかと思います。