微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FindWindow怎么find一个EnumChildWindows没有的窗口?

我正在寻找一个窗口,其类名是“CLIPBRDWNDCLASS”(它可以在办公室应用程序和其他应用程序中find)。

如果我使用FindWindow或findwindowex,我find了第一个有这个类的HWND,但是我想要所有带有这个类的窗口,所以我决定使用recursionEnumChildWindows枚举所有窗口并find我想要的窗口:

//------------------------------------------------------------------------------- BOOL CALLBACK enum_wnd_proc(HWND h,LParaM lp) { char cls[1024] = {0}; ::GetClassNameA(h,cls,1024); if(std::string(cls) == "CLIPBRDWNDCLASS") { // match! } ::EnumChildWindows(h,enum_wnd_proc,NULL); return TRUE; } //------------------------------------------------------------------------------- int _tmain(int argc,_TCHAR* argv[]) { ::EnumWindows(enum_wnd_proc,NULL); return 0; } //-------------------------------------------------------------------------------

这就是这个窗口不能被EnumWindows返回,只能通过FindWindow返回。

有没有人可以告诉它为什么不起作用?

如何使用Python 2.7创build一个希伯来文名称文件

是否有任何可视化工具来实现作为输出结果的SQL查询数据的分层样式?

如何loggingWindows窗体应用程序中的键,而不是集中在窗体上?

Windows:如何在新的命令窗口中运行某些东西,使窗口在进程完成或崩溃时closures?

Python Socket绑定在0.0.0.0上,不能通过127.0.0.1连接

ContactManager.RequestStoreAsync()抛出System.UnauthorizedAccessException

C ++崩溃转储,在Win32exception(使用catch(…)时)的堆栈展开 – VS 2003

分期环境与现场环境相等多less?

在Windows上使用Ruby读取PNG文件失败

Windows控制台中的C ++键input

EnumWindows不起作用的原因是您正在寻找的窗口是一个消息窗口 。

findwindowex可以在两种情况下找到它们:

如果hwndParent和hwndChildAfter都是NULL。

如果您指定“HWND_MESSAGE”作为您的父窗口。

代码将为您找到所有相关的窗口( 这里是一个解决方案的修改版本):

HWND hWindow = findwindowexA(HWND_MESSAGE,NULL,"CLIPBRDWNDCLASS",NULL); while (hWindow ) { // Do something here with window... // Find next window hWindow = findwindowexA(HWND_MESSAGE,hWindow,NULL); }

还要注意的是,不同于上面的链接中写的,只有消息窗口的GetParent() 返回HWND_MESSAGE (至少不是我的测试)。

我简单的方法来枚举所有消息窗口:

EnumChildWindows(GetAncestor(findwindowex(HWND_MESSAGE,0,0),GA_PARENT),addr EnumChildProc,0)

// GetAncestor(findwindowex(HWND_MESSAGE,0,0),GA_PARENT)=“GetMessageWindow”(“Message”类)

// GetAncestor(findwindowex(HWND_DESKTOP,0,0),GA_PARENT)= GetDesktopWindow(class“#32769”)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐