Форум: "WinAPI";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизReadProcessMemory - Как узнать размер процесса в памяти? Найти похожие ветки
← →
jab~ (2004-02-20 17:55) [0]Вот написал такую программку, которая считывает первых некоторое кол-во байт из процесса. А как узнать полный размер памяти который занимает процесс?
Пример того что я написал:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
const
BUFFER_SIZE = 4096;
BUFFER_LIMIT = BUFFER_SIZE - 1;
ReadBase: Pointer = Pointer($00401000);
var
SI: TStartupInfo;
PI: TProcessInformation;
ExeFile: string;
Buf: array [0..BUFFER_LIMIT] of Byte;
ReadBytes: Cardinal;
I: Integer;
begin
if OpenDialog1.Execute then begin
ExeFile:=OpenDialog1.FileName;
try
if ParamCount > 0 then ExeFile := ParamStr(1);
FillChar(SI, SizeOf(SI), $00);
FillChar(PI, SizeOf(PI), $00);
SI.cb := SizeOf(SI);
if not CreateProcess(PChar(ExeFile), "", nil, nil, False, 0, nil, nil, SI, PI) then
RaiseLastWin32Error;
try
if not ReadProcessMemory(PI.hProcess, ReadBase, @Buf, BUFFER_SIZE, ReadBytes) then
RaiseLastWin32Error;
Memo1.Lines.Text:="Read "+IntToStr(ReadBytes)+" bytes:";
Memo1.Lines.Add("");
for I := 0 to ReadBytes-1 do
begin
Memo1.Lines.Text:=Memo1.Lines.Text+" "+IntToHex(Buf[I], 2);
if (I+1) mod 16 = 0 then Memo1.Lines.Add("");
end;
Memo1.Lines.Add("OK");
finally
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
end;
except
on E: EXception do
begin
Memo1.Lines.Add(E.Message);
Halt(1);
end;
end;
end;
end;
end.
← →
Игорь Шевченко © (2004-02-20 18:08) [1]Рихтера читать. Вдумчиво.
← →
Юрий Зотов © (2004-02-21 16:21) [2]> jab~ (20.02.04 17:55)
> А как узнать полный размер памяти который занимает процесс?
Можно и не узнавать - ответ заранее известен. Ровно 4 гигабайта.
← →
jab~ (2004-02-23 09:09) [3]to Юрий Зотов
Это максимальный размер... Мне узнать сколько он в данный момент занимает.
to Игорь Шевченко
Читать медленно и вдумчиво.. :):):)
← →
Игорь Шевченко © (2004-02-24 16:10) [4]jab~ (23.02.04 09:09)
> Это максимальный размер... Мне узнать сколько он в данный
> момент занимает
Читать Рихтера два раза. Читать про функцию VirtualQueryEx в книжке Рихтера.
← →
Digitman © (2004-02-24 17:01) [5]$00401000
а это что такое ? и почему ?
и почему то, что лежит в адресах НИЖЕ упомянутого, ты не считаешь никоим образом относящимся к процессу ??
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c