Главная страница
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.022 c
8-7118
Zurap
2002-01-02 11:18
2002.06.03
3D


1-7050
Abu
2002-05-21 13:11
2002.06.03
Соединение программ.


3-6904
zaic
2002-05-13 14:22
2002.06.03
Не могу открыть через BDE БД (Intrbase) в Millennium.


3-6887
ogu
2002-05-09 23:44
2002.06.03
Как сохранить ADOTable в формате MSAccass (*.mdb)


4-7255
Vulsim
2002-03-31 06:48
2002.06.03
Как из Char Virtual key code получить?