win apiを使用してマウス/キーボードのエミュレーションを学習しようとしています。
sendmessage() 関数を使用してボタンクリックをエミュレートできることがわかりました。
さて、「再生」ボタンの座標を取得し ((60;100))、次のコードを使用してこのボタンを押しようとしています。
int x = 60;
int y = 100;
int lParam = ((x << 16) | (y & 0xffff));
int parentWindow = FindWindow("BaseWindow_RootWnd", "Main Window");//get main winamp window
MessageBox.Show(parentWindow.ToString());//failed if 0
SendMessage(parentWindow, WM_LBUTTONDOWN, IntPtr.Zero, new IntPtr(lParam));//send left mouse button down
SendMessage(parentWindow, WM_LBUTTONUP, IntPtr.Zero, new IntPtr(lParam));//send left mouse button up
しかし、このコードは winamp には影響しません。
誰かが私が犯した間違いを指摘できますか? どんな助けでも大歓迎です!
psマウスをwinampの再生ボタンに移動したり、クリックしたり、元に戻したりすることは私には当てはまりません。
また、winamp の場合、ボタンのハンドルを取得することはできません。ボタン ハンドルでは SendMessage() はかなりうまく機能しますが、座標ではまったく機能しません。
追加#1
上記のコードは、最小化されている場合、winamp ウィンドウをアクティブにして表示します。しかし、再生ボタンはまだ押されたくありません;(
追加#2
上記のコードを実行した後に表示されるメッセージを次に示します。