Приветствую.
Пытаюсь получить текст элемента дерева другого приложения (например, из "Windows Explorer") пишу вот так:
#include <atlbase.h>
#include <atlapp.h>
#include <atlctrls.h>
#include <iostream>
int main()
{
CTreeViewCtrlEx tvc;
tvc = (HWND)0x000806D8; //Значение получено при помощи Spy++
CTreeItem tiCur = tvc.GetSelectedItem(); //Значение получаю, т.е. тут не NULL
WCHAR szBuf[1024] = { 0 };
if (!tiCur.GetText(szBuf, sizeof(szBuf) / sizeof(WCHAR)))
// if (!tiCur.SortChildren(TRUE))
std::wcout << L"Error" << std::endl;
else
std::wcout << szBuf << std::endl;
return 0;
}
Так вот всегда вываливается на ошибку и буфер не заполняет. С начало закралась мысль, что сообщения пришедшие из другого приложения не попадают к окну (понимаю, что мысль шальная, но черт его знает), заменил строку получения текста на сортировку. В результате все сработало и дочерние элементы отсортировались, это доказывает, что сообщения к окну приходят (хотя может быть ни все, но все же ходят). Может кто объяснит, что я не так делаю?