FindWindow已经找到控件的句柄了,想控件发消息为什么还是没反应?

洗洗睡去 2014-02-21 10:16:07
放图说的清楚:
现在想向一个程序的某个按钮发送按下消息

用spy++找到这个按钮类和句柄

在程序里FindWindow及FindWindowEx 能正确找到句柄

但发送按下消息 那个对话框没反应…… 为什么
代码如下

hwndName = ::FindWindowEx(hWndDlg, NULL,NULL, _T("确定"));//找到的和spy++给的一样的句柄
if (hwndName == NULL)
{
AfxMessageBox(_T("没有找到输入框"));

}
else
{

::PostMessage(hwndName,WM_KEYDOWN, VK_LBUTTON, 1);

}



...全文
740 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-02-21
  • 打赏
  • 举报
回复
引用 6 楼 sunnyloves 的回复:
谢谢2位 解决了 原因是:发消息应该向父窗口发送 PostMessage第一个参数应该是父窗口句柄
没有应该一说,具体还是看你发什么消息。 WM_COMMAND 就是发给父窗口的,BM_CLICK 就是发给按钮的。
洗洗睡去 2014-02-21
  • 打赏
  • 举报
回复
谢谢2位 解决了 原因是:发消息应该向父窗口发送 PostMessage第一个参数应该是父窗口句柄
「已注销」 2014-02-21
  • 打赏
  • 举报
回复
HWND hwndName = ::FindWindowEx(hWndDlg, NULL, WC_BUTTON, _T("确定"));
if (IsWindow(hwndName))
{
    ::SendMessage(hwndName, BM_CLICK, 0, 0); 
}
else
{
    AfxMessageBox(_T("没有找到输入框"));
}
许文君 2014-02-21
  • 打赏
  • 举报
回复
可能屏蔽了,那getwindowrect获取按钮区域,然后mouse_event模拟鼠标点击试一下
dahaiI0 2014-02-21
  • 打赏
  • 举报
回复
发完DOWN后再发个UP试试,或者参考下例代码

HWND hWnd = FindWindow(NULL, _T("计算器"))->GetSafeHwnd();

	HWND hBtn1 = ::FindWindowEx(hWnd,NULL,_T("Button"),_T("7"));

	if(hWnd)
	{
		DWORD nId = ::GetDlgCtrlID(hBtn1);    
		::SendMessage( hWnd,WM_COMMAND, MAKEWPARAM(nId, BN_CLICKED), (LPARAM)hBtn1);
	}
洗洗睡去 2014-02-21
  • 打赏
  • 举报
回复
用sendmessage也不行
Eleven 2014-02-21
  • 打赏
  • 举报
回复
HWND hButton = ....;
UINT ID = GetDlgCtrlID(hButton);
PostMessage(GetParent(hButton), WM_COMMAND, MAKEWPARAM(ID, BN_CLICKED), (LPARAM)hButton);

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧