アクティブではないアプリケーションでマウスの移動/クリック/キー押下をシミュレートする
質問
マウスとキーボードのイベントをシミュレートする方法は知っていますが、ユーザーが行ったように動作するため、アクティブなウィンドウに影響します。必要なのは、これらの入力の1つをシミュレートすることですが、アクティブではないウィンドウ内でです。
最小化されているとは言いません。たとえば、msPaintとメモ帳があるとします。メモ帳はペイントの前にあります。また、ペイントウィンドウの特定の座標でマウスクリックをシミュレートする必要がありますが、アクティブに設定せずに、ユーザーがペイントの前面にあるメモ帳を使い続けることができるようにします。
これはまったく可能ですか? ありがとう!
解決
次の操作を実行できます。
1)イベントをシミュレートするウィンドウの HWND
を取得します。これを行うには、 FindWindow
関数を使用できます。この関数は、2つのパラメーターを取ります。1つはウィンドウのクラス名( NULL
を使用できます)、もう1つはウィンドウ(詳細については、MSDNのドキュメントを参照);
2) SendMessage
関数を使用して、目的のウィンドウにメッセージを送信します。パラメーターは、前に取得したウィンドウハンドル( HWND
)、メッセージ(たとえば、 WM_KEYDOWN
、または WM_MOUSEMOVE
、 WM_LBUTTONDOWN
など)、メッセージの WPARAM
( WM_KEYDOWN
の場合はキーの仮想キーコード)、最後に LPARAMメッセージの
( WM_KEYDOWN
の場合は非常に複雑であり、MSDNで詳細を確認する必要があります)。
私の意見では、これはあなたがやろうとしていることに十分です。
他のヒント
もし、JAVAを知っていれば、ロボットクラスを使用できます。
このクラスは、テストの自動化、自動実行デモ、およびマウスとキーボードの制御が必要なその他のアプリケーションの目的で、ネイティブシステム入力イベントを生成するために使用されます
.netに似たようなものがありますか?