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

时间:2014-04-20 19:05:59

标签: c++ winapi

我正在尝试让程序单击另一个程序上的按钮;我决定使用这个函数:

SendMessage(hWndVariable, MsgVariable, wParamVariable, lParamVariable)

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

SendMessage(hWndVariable, BN_CLICK, 0, 0);

问题::但由于有3个按钮,程序如何知道哪一个被点击?大声笑我猜我错过了什么或做了一些完全错误的事情。

2 个答案:

答案 0 :(得分:1)

  

SendMessage(hWndVariable,BN_CLICK,0,0);

这是你的问题。首先,您发送的是不存在的消息(您的意思是BN_CLICKED)。其次,您没有正确发送消息。

answers to your previous questions所述,您需要获取按钮的ID。 You can do this using Spy++

然后,根据BN_CLICKED documentation,您可以发送消息,如this

SendMessage(parentWindowhWnd, WM_COMMAND, (BN_CLICKED << 16) | BUTTONID, buttonhWnd);

适当填写值 - parentWindowhWnd是包含按钮的窗口的HWND,BUTTONID是按钮的ID,buttonhWnd是按钮本身的HWND。

答案 1 :(得分:0)

BN_CLICKED是按钮发送到其父窗口的通知。您正在考虑BM_CLICK消息,您可以将其发送到按钮窗口以模拟其上的点击:

//SendMessage(hWndVariable, BM_CLICK, 0, 0);
SendMessage(hWndVariable, BM_CLICK, 0, 0);

为了实现这一点,hWndVariable必须指向您要点击的特定按钮,而不是您当前正在执行的父窗口。