所以我正在尝试制作应用程序以获取我的资源管理器 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/