c++ - 如何获取外部应用程序 ListView 的 HWND?在 Windows Api 中使用 c++

标签 c++ windows winapi

所以我正在尝试制作应用程序以获取我的资源管理器 ListView 的内容并从中获取项目文本等。但这里有问题......

如果我使用 ListView 检查 Windows 资源管理器文件夹(使用 spy++),出于测试目的我将使用随机文件夹。

它显示窗口的标题是“FolderView”,类是“SysListView32”,嵌套此 ListView 的顶级窗口称为“reference”,这也是所有文件所在的 Windows 资源管理器文件夹的标题.

所以我要做的是..

HWND hWndLV = FindWindow(NULL, TEXT("reference")); // first i get hwnd of the main window, this is where listview window is also nested according to spy++, thats why i do this first.

HWND child = FindWindowEx(hWndLV, NULL,NULL,TEXT("FolderView")); // trying to get hwnd of the listview here but it fails, same happens if i also put the class name along as 

HWND child = FindWindowEx(hWndLV, NULL,TEXT("SysListView32"),TEXT("FolderView"));

我正在使用 bool test = IsWindow(child); 来测试是否失败,而且 VS 调试器每次都显示 0x0000000000,所以我确信我能很好地读取结果。

所以我坚持这个对大多数人来说可能很简单的事情:(

附注我在 vista64 上(如果这很重要的话)

编辑:似乎只有当我搜索我正在搜索的父窗口的第一个嵌套级别时,此功能才有效。所以我假设我需要的是一种处理某种深层嵌套级别搜索的方法。

我还尝试通过定义每个父项的 hwnd 来逐步进行,然后我在其上使用 findwindox 但是天哪,然后我到了有 5 个同名嵌套窗口的地步,其中只有一个包含我的 ListView ,这么好,嗯?

最佳答案

如果您获得了主窗口的句柄(例如使用FindWindow),您可以使用EnumChildWindows 枚举它的子窗口。 .

关于c++ - 如何获取外部应用程序 ListView 的 HWND?在 Windows Api 中使用 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567321/

相关文章:

c++ - 如果设置了 TVN_EX_MULTISELECT,CTreeCtrl TVN_SELCHANGING 将不起作用

c++ - 使用 Boost 的邻居边缘

windows - (如何)我可以将带有 iframe 代码的内容嵌入到 powerpoint 2010 中吗?

node.js - Windows 上的 "npm run""cannot find module"

c++ - Microsoft Visual C++、Visual Studio,如何修复错误 : identifier "GetAsyncKeyState" is undefined

windows - 如何直接调用 NdrClientCall2() 函数?

c++ - 为什么人们不在 C++ 中的头文件名称中使用大写字母?

c++11 - 正则表达式匹配

c++ - ImpersonateLoggedOnUser 并启动使用 ocx 的新进程失败

database - cscope 中的多个数据库处理