Форум: "WinAPI";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];
ВнизФункция TreeView_GetItem - не могу добиться результата... Найти похожие ветки
← →
Старик Бивис (2002-03-29 16:29) [0]Задача следующая: Дано чужое окно с TreeView. Есть HAndle (правильный - проверено) TreeView, найден HTREEITEM искомого Itema.
Далее: PTV.hItem :=ItemHandle;
PTV.pszText :=@LocBuf;
PTV.mask := TVIF_TEXT;,ь где PTV - это указатель на TV_ITEM
и TreeView_GetItem(TrHWND,PTV);, где TrHWND-Handle TreeView
Результат - FALSE.
Смотрел в юните comctrls.pas реализацию TTreeView. Там в TTreeNodes.GetNode используется эта же функция, но вот только в качестве первого параметра (Handle tree-view control) указан Handle TreeNodes. Может в этом дело? Как же тогда быть?
← →
Suntechnic (2002-03-29 18:05) [1]Что ты поразумеваешь под "чужим окном"? Это окно в другом процессе? Тогда ничего не получится у тебя. Потому как PTV - это указатель на структуру которая на самом деле находится другом адресном пространстве и ты к ней доступ ну никак получить не можешь.
>Как же тогда быть?
Надо внедряться в чужое адресное пространство например с помощью ловушек.
← →
Старик Бивис (2002-04-01 08:23) [2]Это вот именно тот момент, который я и не догнал. А я, почему то полагал, что структуру создаю я, а TreeView_GetItem мне ее заполняет. Выходит, TreeView_GetItem должен мне в PTV вернуть просто указатель на структуру, которая на самом деле находится в TreeView ?! Если так, тогда все понятно.
Был бы весьма признателен, уважаемый Suntechnic, если бы вы мне немножко объяснили про принцип внедрения в чужое адресное пространство с помощью ловушек.
← →
Suntechnic (2002-04-01 19:49) [3]>А я, почему то полагал, что структуру создаю я, а TreeView_GetItem мне ее заполняет.
Да всё именно так и происходит. Просто ты создал структуру и передал её адрес, ну скажем 0x33f4, только ведь это адрес в твоём адресном пространстве. А чужое окно, получив 0x33f4, попытатся обратиться по нему, но только в своём адресном пространстве. Вот тут и наступит oops.
>если бы вы мне немножко объяснили про принцип внедрения в чужое адресное пространство с помощью ловушек
Тема не очень простая(правда и не очень сложная), но "немножко" объяснить навряд ли получится. Лучше для этого почитать, например, Рихтера. Да и эта тема неоднократно подымалась в форумах. Поищи ссылки на SetWindowsHookEx.
← →
Старик Бивис (2002-04-02 08:08) [4]Спасибо
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c