如何获得外部应用程序列表视图的HWND?在Windows Api中使用c ++

时间:2010-12-31 00:36:52

标签: c++ windows winapi

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

如果我使用listview检查windows explorer文件夹(使用spy ++),仅出于测试目的,我将使用随机文件夹。

它向我显示窗口的标题是“FolderView”,类为“SysListView32”,嵌套此列表视图的顶级窗口称为“引用”,这也是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,所以我确信我的搜索结果很好。

所以对于大多数人来说,这可能是一件简单的事情:(

P.S。我在vista64上(无论如何重要)

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

我也尝试一步一步地定义每个父母的hwnd,然后我在上面使用findwindowex但是哦男孩然后我到达有5个嵌套窗口全部具有相同名称的点,其中只有一个包含我的listview,真好吗?

1 个答案:

答案 0 :(得分:3)

如果你有一个主窗口的句柄(例如使用FindWindow),你可以使用EnumChildWindows枚举它的子窗口。