提问者:小点点

SendMessage(hWnd, Msg, wParam, lParam)困难


我试图让一个程序点击另一个程序上的按钮;我决定使用该功能:

SendMessage(hWndVariable, MsgVariable, wParamVariable, lParamVariable)

但是有一个问题。带有窗口句柄hWndVariable的窗口有3个按钮。我最初计划在SendMessage函数中使用以下参数:

SendMessage(hWndVariable, BN_CLICK, 0, 0);

问题:: 但是既然有三个按钮,程序怎么知道哪个按钮被点击了?哈哈,我猜我要么错过了什么,要么完全做错了什么。


共2个答案

匿名用户

发送消息(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必须指向要单击的特定按钮,而不是像您当前所做的那样指向其父窗口。