我正在尝试使用 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
以下是我执行上述代码后收到的消息。