Форум: "WinAPI";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];
ВнизКак получить картинку из чужой памяти? Найти похожие ветки
← →
electhp (2004-01-08 08:22) [0]мне небходимо получить картинку TBitmap из памяти другого приложения, для этого как я понимаю необходимо найти указатель на саму картинку а затем ее считать из памяти, поэтому я пытаюсь искать во всей памяти, ее размер я получаю функцией:
function GetMemoryTotalPhys: DWord;
var
memStatus: TMemoryStatus;
begin
memStatus.dwLength := sizeOf (memStatus);
GlobalMemoryStatus(memStatus);
Result := memStatus.dwTotalPhys;
end;
Затем я пытаюсь искать указатель, инкрименцируя его значение начиная от нуля и сравнивая со своей картинкой, но при попытке читать чужую память получаю ошибку:
procedure TForm1.Button1Click(Sender: TObject);
var
Bm: TBitmap;
pBm: ^TBitmap;
Pos, All: longInt;
begin
All:= GetMemoryTotalPhys;
Edit1.Text:= IntToStr(All);
bm:= TBitmap.Create;
bm:= Image1.Picture.Bitmap;
pBm:= 0;
// pBm:= @Bm;
for Pos := 1 to All Do
Begin
Inc(pBm);
Edit2.Text:= IntToStr(Pos);
Edit2.Repaint;
if pBm^ = Bm Then
Begin // Ошибку получаю тут, при сравнении
Image2.Picture.Bitmap:= pBm^;
Break;
End;
End;
end;
Это вообще говоря все к чему я пришел, еще хотелось бы узнать как получить адреса памяти выделенной конкретной программе, что бы сократить время поиска.
← →
Unax (2004-01-08 10:35) [1]Ты не можешь просто так читать память чужого процесса, да и размер совсем совсем не тот ты определяешь. Этот код полный бред.
← →
YuRock (2004-01-08 10:36) [2]Советую вкорне изменить способ получения этой картинки, т.к. само по себе выражение "получить TBitmap из памяти чужого процессора" (т.е. чужой объект) - это по меньшей мере сложнейшая задача.
Которая если и выполнима, то только ради примера для учебников :))
← →
YuRock (2004-01-08 10:37) [3]... В [2] заменить слово "процессора" на "процесса", конечно.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.011 c