Ох ReadProcessMemory

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Kolobuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 24.10.2006 (Вт) 20:03

Ох ReadProcessMemory

Сообщение Kolobuk » 14.02.2007 (Ср) 20:43

Код: Выделить всё
Dim X as Long

ReadProcessMemory pHandle, &H93DA580, X, 4, 0&

Text1 = X


- X получается 0, почему?
Если вместо Х считывать 4-х байтную строку, результат не нулевой (буковки корявые появляются всё время разные, т.к. значения в адресе меняется).

------------------------
В адресе значение не нулевое - это точно.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.02.2007 (Ср) 21:00

Задекларировано как?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Kolobuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 24.10.2006 (Вт) 20:03

Сообщение Kolobuk » 14.02.2007 (Ср) 21:01

Код: Выделить всё
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAcess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddess As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWriten As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)

Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF



-----------------------
Если X объявить как Single, снимается число близкое к 0 (2,505897E-39) - но это же не ноль. И Long не может показать ноль.
Последний раз редактировалось Kolobuk 14.02.2007 (Ср) 21:05, всего редактировалось 1 раз.

_ae_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 165
Зарегистрирован: 08.10.2006 (Вс) 14:37

Сообщение _ae_ » 14.02.2007 (Ср) 21:05

"ByVal lpBuffer As Any"=>"ByRef lpBuffer As Any"

Kolobuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 24.10.2006 (Вт) 20:03

Сообщение Kolobuk » 14.02.2007 (Ср) 21:07

Спасибо. Всё работает теперь :salut:

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 17.02.2007 (Сб) 21:18

Вопрос, знаю, глупый, но я так и не понимаю что есть ByVal и ByRef (отличия)? :oops:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.02.2007 (Сб) 22:05

Поиском надо пользоваться. По форуму.
http://bbs.vbstreets.ru/viewtopic.php?t=2593
http://bbs.vbstreets.ru/viewtopic.php?t=10572
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 18.02.2007 (Вс) 11:12

спасибо. я о чем то об этом догадовался :lol: но теперь я в своих убеждених убежден. :? :lol:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 108

    TopList