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

FindWindow怎么find一个EnumChildWindows没有的窗口?,第1张

概述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一个希伯来文名称的文件?

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

如何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”)

总结

以上是内存溢出为你收集整理的FindWindow怎么find一个EnumChildWindows没有的窗口?全部内容,希望文章能够帮你解决FindWindow怎么find一个EnumChildWindows没有的窗口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1262125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存