HRACH
1

Вопросы по TreeView

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

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

Я пишу программу, которая осуществляет запуск и управление другой программы (Nero Express).
Имея дескриптор (Handle) TreeView этой программы мне не удается активизировать пункты (элементы) TreeView.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2010, 19:00
Ответы с готовыми решениями:

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

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

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

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

5
Comanche
23.11.2010, 20:21 2
[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 3
Привет 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 4
Убери ByVal при передаче tvi вот здесь:
Код
WriteProcessMemory hProcess, ByVal pMem, tvi, Len(tvi), w
HRACH
28.11.2010, 14:18 5
Привет 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 6
Слушай, я же тебе не готовый код привёл, а лишь ОБРАЗЕЦ (который, кстати, давным-давно выложил в этот форум Messir). В своё время (в одном из твоих предыдущих топиков на эту же тему) я тебе давал ссылку на оригинальное сообщение от Мессира: там чёрным по белому написано, что этот код проходит только по одному уровню узлов дерева, а рекурсивность прохода нужно реализовывать самому! Не могу ж я за тебя вообще всю задачу решить! Идею подсказал - а дальше уж давай сам...
29.11.2010, 11:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2010, 11:36
Помогаю со студенческими работами здесь

Вопросы по Си
Здравствуйте! Начал изучать Си, и возникли кое-какие вопросы #ymstude &lt;avr/io.h&gt; void...

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru