Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.03;
Скачать: CL | DM;

Вниз

Функция 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 вся ветка

Текущий архив: 2002.06.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
4-7261
chernoruk
2002-03-31 18:03
2002.06.03
Неизвестный науке тип !


1-7102
Афоня
2002-05-22 15:02
2002.06.03
Вопрос по RxLib


1-7063
Nikolay
2002-05-20 21:38
2002.06.03
Создание переменных.


4-7262
hvs-md
2002-03-31 21:22
2002.06.03
PrinScreen c окна на неактивном рабочем столе.


6-7148
Oak
2002-03-24 17:01
2002.06.03
работа с CGI