Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите, какие значения должны быть присвоены переменным в


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();


Наверх

Титульная страница Поиск, карта сайта Написать письмо