读书人

在指定的窗口中查寻某个子窗口或者控件

发布时间: 2013-11-13 14:04:18 作者: rapoo

在指定的窗口中查找某个子窗口或者控件
群里讨论一个技术问题:

用函数 findowex(任务栏句柄,null, "button", NULL); 用这个法子获取 任务栏左侧的那个win徽标按钮失败

结果失败了。

不明白原因,还有spy++观察了,这个按钮的父窗口确实是任务栏,而且该按钮的风格居然是wm_popup.

我做过实验,如果一般的按钮用wm_popup风格,程序直接崩溃。


根据一些经验: findowex是一个没有保存查询记录的功能,说白就是查询一次, 如果没有查到则遍历所有,

查到立即返回。


由于任务栏 中中只有一个按钮, 那么猜测获取到是必然成功的。 事实上,却无法获取到。


我刚才又新建了一个工程测试,这个法子绝对可以获取到按钮的句柄的。

但是为什么这个法子无法获取到 任务栏左侧的那个win图标呢。



[解决办法]
Win7

HWND hDesktop =::GetDesktopWindow();
HWND hStart =::FindWindowEx( hDesktop, NULL, _T( "Button" ), _T( "开始" ) );
if ( NULL != hStart )
{
::EnableWindow( hStart, TRUE );
}

读书人网 >VC/MFC

热点推荐