Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
HRACH

Вопросы по TreeView

23.11.2010, 19:00. Показов 1195. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу представить подробнее мою задачу.

Я пишу программу, которая осуществляет запуск и управление другой программы (Nero Express).
Имея дескриптор (Handle) TreeView этой программы мне не удается активизировать пункты (элементы) TreeView.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.11.2010, 19:00
Ответы с готовыми решениями:

Вопросы по Select in TreeView
Помогите люди добрые! У меня следующая ситуация: Работаю с TreeView и его выбранным элементом TreeView.SelectedNode Вопрос 1: Если...

Когда вопросы кончаются, сделать кнопку неактивной и вывести сообщение о том, что вопросы кончились
Кто знает ребят подскажите в чем проблема, есть метод обновляющий текст в TextView (всего 6 вопросов). Так вот когда вопросы кончаются...

Как присвоить серверному контроллу TreeView коллекцию из TreeView, в котором находится информация из БД
Здравствуйте, в общем я кидаю на страницу TreeView и хочу его динамически заполнять, но сразу куча проблем, обо всем по порядку: ...

5
Comanche
23.11.2010, 20:21
[code]
Option Explicit
'
Private Declare Function CloseHandle Lib 'kernel32.dll' ( _
ByVal hObject As Long) As Long
Private Declare Function GetParent Lib 'user32.dll' ( _
ByVal hwnd As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib 'user32.dll' ( _
ByVal hwnd As Long, _
ByRef lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib 'kernel32.dll' ( _
ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Declare Function ReadProcessMemory Lib 'kernel32.dll' ( _
ByVal hProcess As Long, _
ByRef lpBaseAddress As Any, _
ByRef lpBuffer As Any, _
ByVal nSize As Long, _
ByRef lpNumberOfBytesWritten As Long) As Long
Private Declare Function SendMessage Lib 'user32.dll' Alias 'SendMessageA' ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByRef lParam As Any) As Long
Private Declare Function VirtualAllocEx Lib 'kernel32.dll' ( _
ByVal hProcess As Long, _
ByRef lpAddress As Any, _
ByRef dwSize As Long, _
ByVal flAllocationType As Long, _
ByVal flProtect As Long) As Long
Private Declare Function VirtualFreeEx Lib 'kernel32.dll' ( _
ByVal hProcess As Long, _
ByRef lpAddress As Any, _
ByRef dwSize As Long, _
ByVal dwFreeType As Long) As Long
Private Declare Function WriteProcessMemory Lib 'kernel32.dll' ( _
ByVal hProcess As Long, _
ByRef lpBaseAddress As Any, _
ByRef lpBuffer As Any, _
ByVal nSize As Long, _
ByRef lpNumberOfBytesWritten As Long) As Long
'
Private Const PROCESS_VM_OPERATION As Long = (&H8)
Private Const PROCESS_VM_READ As Long = (&H10)
Private Const PROCESS_VM_WRITE As Long = (&H20)
Private Const MEM_RELEASE As Long = &H8000
Private Const MEM_COMMIT As Long = &H1000
Private Const PAGE_READWRITE As Long = &H4
'
Private Const TV_FIRST As Long = &H1100
Private Const TVM_GETITEM As Long = (TV_FIRST + 12)
Private Const TVIF_TEXT As Long = &H1
Private Const TVGN_NEXT As Long = &H1
Private Const TVGN_ROOT As Long = &H0
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_SELECTITEM As Long = (TV_FIRST + 11)
Private Const TVGN_CARET As Long = &H9
'
Private Type TVITEM
mask As Long
hItem As Long
state As Long
stateMask As Long
pszText As Long
cchTextMax As Long
iImage As Long
iSelectedImage As Long
cChildren As Long
lParam As Long
End Type
'
Public Sub GetItemsText(ByVal hTreeView As Long, ByVal stSample As String)
Dim hProcess As Long, pMem As Long, pID As Long, tWindow As Long, w As Long
Dim hItem As Long, tvi As TVITEM, Buffer As String

' Получаем дескриптор родительского окна нашего дерева:
tWindow = GetParent(hTreeView)
While GetParent(tWindow) <> 0
tWindow = GetParent(tWindow)
Wend
' По этому дескриптору получаем ID процесса:
GetWindowThreadProcessId tWindow, pID
' Открываем процесс с правами записи и чтения:
hProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, 0, pID)
' Если не получилось - выходим:
If hProcess = 0 Then
MsgBox 'Cannot open the selected process.', vbCritical, 'Eror'
Exit Sub
End If
' Резервируем кусок памяти в контексте процесса:
pMem = VirtualAllocEx(hProcess, ByVal 0, ByVal (Len(tvi) + 256), MEM_COMMIT, PA
HRACH
24.11.2010, 18:55
Привет Comanche.

Твои код я запустил но на инструкций
' посылаем сообщение дереву:
SendMessage hTreeView, TVM_GETITEM, 0, ByVal pMem
возникает ошибка в управляемой программе(Creatr50.exe).
Вот сообщение:
________________________________________ _______________
Creatr50.exe – Application Error
________________________________________ _______________

The instructionat «074f0221» referenced memory
at «0x0561cdfc».
The memory could not be «writte».

Click on OK to terminate the program
Click on CANCEL to debug the program
________________________________________ ________________
Comanche
26.11.2010, 13:58
Убери ByVal при передаче tvi вот здесь:
Code
1
WriteProcessMemory hProcess, ByVal pMem, tvi, Len(tvi), w
HRACH
28.11.2010, 14:18
Привет Comanche.

'копируем строку-результат обратно в свою память:
Buffer = Space$(256)
ReadProcessMemory hProcess,ByVal(pMem + Len(tvi)),ByVal Buffer,256,w

После этого оператора Buffer=''
Не знаю где ошибка.

Мне нужно актижизиривать каталог FOLDER1.
Вот как виглядит 'чужой' TreeView

Desktop
|
+ ----My Docyment
|
+ ----My Computer
| |
| +-------Floppy (A)
| |
| +-------Local Disk (C
| | |
| | |------ FOLDER1
| . |
| . +------ Folder2
| |
| +……---- Folder3
+---My Netvork Place .............
.............
Comanche
29.11.2010, 11:36
Слушай, я же тебе не готовый код привёл, а лишь ОБРАЗЕЦ (который, кстати, давным-давно выложил в этот форум Messir). В своё время (в одном из твоих предыдущих топиков на эту же тему) я тебе давал ссылку на оригинальное сообщение от Мессира: там чёрным по белому написано, что этот код проходит только по одному уровню узлов дерева, а рекурсивность прохода нужно реализовывать самому! Не могу ж я за тебя вообще всю задачу решить! Идею подсказал - а дальше уж давай сам...
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2010, 11:36
Помогаю со студенческими работами здесь

Опросник. Создание дерева зависимостей в treeView, сохранение дерева в XML, построение дерева в treeView из XML
Всем доброго времени суток. Тема является продолжением вот этой темы. Создаю 2ю, так как там был другой вопрос, который скорее...

Вопросы по Си
Здравствуйте! Начал изучать Си, и возникли кое-какие вопросы #ymstude &lt;avr/io.h&gt; void main(void) { PORTB=0xFF; DDRB=0x00; ...

Вопросы по с/с++
Хотелось бы узнать , есть ли сайты по с\с++ которые содержат только вопросы и ответы по всем темам. Как тесты. Если не понятно как я...

Вопросы
Ребята, никто не писал никогда код на С++, связанный с имитационным моделированием? Просто, дали, там набор математич. формул и теория, а...

Вопросы по C++
Всем привет! У меня появилось несколько вопросов по C++, был бы рад, если бы Вы помогли бы мне хотя бы из одним из них. 1) Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru