2010-12-31 2 views
4

Так что я пытаюсь сделать приложение, чтобы получить содержимое списка моих обозревателей, получить текст статьи и т. Д., Но вот проблемы ...Как я могу получить HWND из списка внешнего приложения? В Windows Api с использованием C++

Если я проверяю папку проводника Windows (используя 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 каждый раз, так что я уверен, что я читаю результаты хорошо.

Так я застрял на этом, наверное, простой вещи для большинства людей :(

пса я нахожусь на Vista64 (если это имеет значение, так или иначе)

редактировать: Похоже, что эта функция работает только тогда, когда я искать первый вложенный уровень родительского окна, который я ищу. Поэтому я предполагаю, что мне нужен способ получить ручку с каким-то глубоким поиском уровня вложенного уровня.

Я также попытался шаг за шагом определить hwnd каждого родитель, тогда я использую findwindowex, но ох, тогда я доберусь до точки, где есть 5 вложенных окон с одинаковым именем и только один из них содержит мой список, так что хорошо?

ответ

3

Если у вас есть ручка в главном окне (например, с помощью FindWindow), вы можете перечислить ее дочерние окна, используя EnumChildWindows.

+0

Не могли бы вы привести какой-нибудь пример, как бы получить обработчик listview с помощью EnumChildWindows, я действительно новичок в этом – Marko29

+2

@ Marko29 Пример можно найти здесь: http://blogs.msdn.com/b/oldnewthing/archive /2007/01/16/1478717.aspx – Vladimir

+0

Я получаю общее представление о том, как это работает, но теперь только то, о чем я озадачен, - это как захватить hwnd, который мне нужен (listview), пока он перечисляет его через него. – Marko29

Смежные вопросы