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

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

Нужна помощ!!!!


root ©   (2006-09-25 18:18:00) 

Существет процесс в процессе есть переменная TBitmap
как из другого приложения сделать следующее:

найти эту переменную
прочитать с нее данные
записать в нее данные


Elen   (2006-09-26 12:31:00) [1]


> данные  поступают в эту переменную

Если эти данные хранятся как ресурсы тебе проще выдрать-заменить их там чем нибудь типа ExeScope, а не писать свой патчер


Leonid Troyanovsky   (2006-09-26 12:18:00) [2]


> Dmitrij_K   (26.09.06 08:52) [5]

> > Фу-фу. В одну-то строку.

> напиши тогда как правильно.


В две :)

Насчет же, писать либо критиковать, я уж решу сам.
А для чужого кода принято приводить копирайт.

--
Regards, LVT.

PS Извини, но я избегаю длительных дискуссий с анонимами.


Сергей М.   (2006-09-26 11:27:00) [3]

А с чего ты взял, что вражеское приложение написано в Делфи ?


root   (2006-09-26 10:51:00) [4]

TBitmap находится в чужем процессе.
данные  поступают в эту переменную через TImage или TPanel пока непонятно повторяю процесс чужой была задача получить HWND  TPanel  и перерисовать его но переменная TBitmap осталась неизменной т.е. в нее непоступили изменения из этого вопрос есть ли путь изменения значения переменной находящейся в другом процессе например из режима драйвера?
ктонибудь имеет представление как это реализовать?


Сергей М.   (2006-09-26 09:08:00) [5]


> root ©   (25.09.06 18:18)


> Существет процесс в процессе есть переменная TBitmap


Это процесс твоегоприложения ? Или "чужого" ?


Dmitrij_K   (2006-09-26 08:52:00) [6]


> Фу-фу. В одну-то строку.

Код не мой, содрал откуда-то. Критиковать каждый может, напиши тогда как правильно.


Leonid Troyanovsky   (2006-09-25 22:39:00) [7]


> Dmitrij_K   (25.09.06 20:03) [3]

>    fs.Free; CloseHandle(hProcess);


Фу-фу. В одну-то строку.

И, вообще, ожидающие исключений от win32 вызовов -
неисправимые оптимисты.

Ну, и, наконец, серьезные люди не могут быть анонимами.

--
Regards, LVT.


Dmitrij_K   (2006-09-25 20:03:00) [8]


> Кстати, стороний процесс не имеет доступа к памяти другого
> процесса.

Зато может получить
program Project1;
uses
 Windows, Messages, Classes;
procedure DumpMemory(ProcessID: dword);
var
 hProcess: THandle;
 Mbi:      TMemoryBasicInformation;
 Buf:      PByte;
 adr, r:   dword;
 fs:       TFileStream;
begin
 adr := 0; r := 0;
 hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ or
                         PROCESS_VM_OPERATION, false, ProcessID);
 if hProcess <> 0 then
 begin
   try
     fs := TFileStream.Create('C:\dump.mmr', fmCreate);
   except fs := nil; end;
   while VirtualQueryEx(hProcess, pointer(Adr), Mbi, SizeOf(Mbi)) <> 0 do
   begin
     if (Mbi.State = MEM_COMMIT) and not ((Mbi.Protect and PAGE_GUARD) = PAGE_GUARD) then
     begin
       GetMem(Buf, Mbi.RegionSize);
       try
         if ReadProcessMemory(hProcess, Mbi.BaseAddress, Buf, Mbi.RegionSize, r) then
           if fs <> nil then fs.Write(Buf^, r);
       finally
         FreeMem(Buf);
       end;
     end;
     adr := adr + Mbi.RegionSize;
   end;
   fs.Free; CloseHandle(hProcess);
 end;
end;
begin
 DumpMemory(GetCurrentProcessId);
end.


@!!ex   (2006-09-25 19:02:00) [9]

P.S.
Кстати, стороний процесс не имеет доступа к памяти другого процесса.
Так что придется делать через Hook...
Если процесс твой, то ИМХО глупо делать хук для своего процесса....
Если процесс  не твой и код его ты изменять не можеш... То толку от хука не будет. ИМХО

Объясни чего добится хочеш.
Этот тот случай, когда задачу надо знать целиком.


@!!ex   (2006-09-25 18:46:00) [10]

Щютник, нафик.....
Где то я похожий вопрос уже видел. неть?

Процесс твой? Ты можеш его код менять?


Наверх

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