![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите, какие значения должны быть присвоены переменным в
nuflin © (2004-03-26 10:04:00)Подскажите, какие значения должны быть присвоены переменным в функции ReadProcessMemory
ReadProcessMemory(
HANDLE hProcess, // handle of the process whose memory is read
LPCVOID lpBaseAddress, // address to start reading
LPVOID lpBuffer, // address of buffer to place read data
DWORD nSize, // number of bytes to read
LPDWORD lpNumberOfBytesRead // address of number of bytes read
);
Digitman (2004-03-27 14:55:00) [1]используй модули tlhelp32.pas (win9x) и psapi.pas (NT/W2k/XP)
nuflin (2004-03-27 14:46:00) [2]А как получить идентификаторы всех процессов?
Digitman (2004-03-27 14:09:00) [3]значение уник.идентификатора процесса как раз и есть значение кардинального типа (DWORD)
вопрос в том, идентификатор какого конкретно процесса ты пытаешься передать этим параметром .. в системе не существуют процессы с уник.идентификатором равным 1
если ты пытаешься открыть текущийпроцесс, то его ид-р м.б. получен вызовом GetCurrentProcessId
nuflin (2004-03-27 13:57:00) [4]> Digitman
третий праметр имеет тип cardinal(dword,longword) - 0..4294967295
Digitman (2004-03-27 12:54:00) [5]
> nuflin
что за "единица" фигурирует 3-м параметром вызова OpenProcess() ? от балды проставлена она ?
3-й параметр д.б. уникальным идентификатором существующего процесса, а не каким-то непопонятно откуда взятым числом
nuflin (2004-03-27 10:58:00) [6]например
AProcessHandle := OpenProcess(PROCESS_VM_READ, false, 1);
Kerk (2004-03-27 10:33:00) [7]нет. код покажи
nuflin (2004-03-27 09:28:00) [8]AProcessHandle всегда будет равен 0 даже если менять значение переменной AProcessID
Игорь Шевченко (2004-03-26 10:18:00) [9]Пример использования:
var
AProcessHandle: THandle;
AProcessID: Cardinal;
ATargetProcessParametersPointer: Pointer;
AReturned: Cardinal;
DesiredAddress: Pointer;
..............
AProcessHandle := OpenProcess(PROCESS_VM_READ, false, AProcessID);
if AProcessHandle = 0 then
RaiseLastWin32Error();
try
{ Получение адреса структуры параметров процесса }
if not ReadProcessMemory(AProcessHandle,
DesiredAddress,
@ATargetProcessParametersPointer, SizeOf(Ptr32),
AReturned) then
RaiseLastWin32Error();