ウィンドウから別のウィンドウにクリックを送信する C# プログラムを作成しています。winapi から SendMessage と PostMessage を使用しています。SendMessage はキーボード イベントに対しては正常に機能しますが、それを使用してマウス イベントを送信しようとすると、常にマウス座標 0,0 が送信されます。アプリケーションがイベントを受信していることを spy++ で確認できますが、x と y は (0,0) にあり、アプリはマウスが画面外 NCHITTEST=NOTCLIENT であると認識しています。
コードは次のとおりです。
PostMessage(appWin, (int)WMessages.WM_MOUSEMOVE, 0, MakeDword(300, 200));
PostMessage は次のように宣言されます。
[DllImport("user32.dll", EntryPoint = "PostMessageA", SetLastError = true)]
protected static extern bool PostMessage(IntPtr hwnd, uint Msg, long wParam, long lParam);
appWin はウィンドウへのハンドルです (イベントを受信することを spy++ で確認済み)。ウィンドウにはコントロールがまったくありません。また、複数のマクロ MakeLParam、MakeDword、手動なども試しました。Windows7 を使用しています。
私は昨夜/今朝のほとんどを問題を見つけようとして離れていましたが、見つけることができませんでした. Post/SendMessage に関するオンラインの投稿は多数ありますが、同様の問題が発生し、回答がなかった投稿を 1 つだけ見つけることができました。
問題を要約すると: SendMessage が適切なメッセージをアプリケーション ウィンドウに送信する理由を知っている人はいますか?
ありがとう!