Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подскажите, как извлечь информацию из окна класса 
:(
    Опции темы
Гость_max
Дата 13.12.2003, 12:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А ситуация у меня такая. Есть .chm файл справки, в открытом виде
окно этой справки содержит в себе дочернее окно класса SysTreeVIew32,
в котором выведены разделы справки в виде дерева. Хочу получить в
цикле текст всех деревьев и всех его листьев. Состряпал такую процедурку:
Код

Private Sub Command3_Click()
'идентификатор пункта TreeView
Dim item As Long
'счетчик цикла
Dim i As Integer
'получим идентефикатор корневого пункта
item = SendMessage(TreeView1.hwnd, TVM_GETNEXTITEM, TVGN_ROOT, 0)

'подготовим структуру для извлечения текста из пункта TreeView
Dim tvi As TV_ITEM
  With tvi
     .mask = TVIF_TEXT
     .hItem = item
     .pszText = String$(255, 0)
     .cchTextMax = 255
  End With
'получим информацию в заготовленную структуру
SendMessage TreeView1.hwnd, TVM_GETITEM, 0&, tvi
'выведем извлеченный текст
Debug.Print "текст = " & tvi.pszText
'повторим извлечение текста из остальных пунктов Treeview
For i = 1 To 3
item = SendMessage(TreeView1.hwnd, TVM_GETNEXTITEM, TVGN_NEXT, ByVal item)
With tvi
     .mask = TVIF_TEXT
     .hItem = item
     .pszText = String$(255, 0)
     .cchTextMax = 255
  End With
SendMessage TreeView1.hwnd, TVM_GETITEM, 0&, tvi
Debug.Print "текст = " & tvi.pszText
Next i
End Sub

Проблема, если в SendMassage ставлю хэндл Treeview контрола, который лежит у
меня на форме, то текст заполучаю без проблем, но если подставить хэндл
дочернего окна справки класса SysTreeVIew32, при прохождении строки:
Код

  SendMessage хэндл_окна, TVM_GETITEM, 0&, tvi

выдается ошибка:

Программа HH вызвала сбой при обращении к странице памяти
в модуле COMCTL32.DLL по адресу 0167:82630026.
Регистры:
и т.д. и т.п.

Подскажите, кто знает в чем может быть причина, что из родного TreeView читаем без
проблем, а на чужой ругаетсяconfused.gif

  Вверх
Гость_Serj
Дата 14.12.2003, 01:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я так понял, что ты хочешь получить инфу из Tree другого процесса?! Если да, то твой метод не пройдет. Здесь надо писать длл и внедрятся в чужой процесс. В этом процессе выделить необходимый объем памяти для копирования твоей "tvi" и скопировать ее в адресное пространство чужого процесса. А уж потом - SendMessage хэндл_окна, TVM_GETITEM, 0&, tvi . И после этого надо прочитать данные из памяти чужого процесса. В общем мутное это дело.
  Вверх
Unregistered
Дата 14.12.2003, 12:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Гость_Serj, подскажи, плиз, как на VB можно внедрить длл в чужой процесс?
Все таки хочется увидеть, что может получиться.
  Вверх
Гость_Serj
Дата 14.12.2003, 17:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Такую длл писать надо на С++. Советую купить книгу "Программирование в Win32 API" Стивен Роман. Там как раз речь о твоем случае.
  Вверх
Unregistered
Дата 14.12.2003, 21:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата

Такую длл писать надо на С++. Советую купить книгу "Программирование в Win32 API" Стивен Роман. Там как раз речь о твоем случае.

Не подскажешь, может где-то можно найти ее электронный вариант?
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0382 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.