我试图让一个程序点击另一个程序上的按钮;我决定使用该功能:
SendMessage(hWndVariable, MsgVariable, wParamVariable, lParamVariable)
但是有一个问题。带有窗口句柄hWndVariable的窗口有3个按钮。我最初计划在SendMessage函数中使用以下参数:
SendMessage(hWndVariable, BN_CLICK, 0, 0);
问题:: 但是既然有三个按钮,程序怎么知道哪个按钮被点击了?哈哈,我猜我要么错过了什么,要么完全做错了什么。
发送消息(hWndVariable,BN_CLICK,0,0);
这就是您的问题所在。首先,您正在发送一条不存在的消息(您的意思是BN_CLICKED
)。其次,您没有正确发送消息。
如前面问题的答案中所述,您需要获取按钮的ID。您可以使用间谍来执行此操作。
然后,根据BN\u点击的文档,您可以这样发送消息:
SendMessage(parentWindowhWnd, WM_COMMAND, (BN_CLICKED << 16) | BUTTONID, buttonhWnd);
正确填写值-parentWindowhWnd是包含按钮的窗口的HWND,
BUTTONID是按钮的ID,
buttonhWnd是按钮本身的HWND。
BN_CLICKED
是按钮发送到其父窗口的通知。您正在考虑BM_CLICK
消息,您可以将其发送到按钮窗口以模拟单击它:
//SendMessage(hWndVariable, BM_CLICK, 0, 0);
SendMessage(hWndVariable, BM_CLICK, 0, 0);
为了使其工作,hWndVariable必须指向要单击的特定按钮,而不是像您当前所做的那样指向其父窗口。