Поддержка / Donate
 

WebMoney

Яндекс.Деньги

SMS.Копилка
Деньги@Mail.ru
Rupay
E-gold
PayPal

 

Благодарю за поддержку!

Лента RSS - Новости сайта Новости сайта
Лента RSS - Новости форума Новости форума
Добавить в закладки и поделиться Bookmark and Share

 

Архив исходников

 


Automatic translation

 
English German French
Italian Spanish Portuguese
Greece Japan Chinese
  Korean  

  

 

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Пропатчить процесс

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{....}

 var
   WindowName: Integer;
   ProcessId: Integer;
   ThreadId: Integer;
   buf: PChar;
   HandleWindow: Integer;
   Write: Cardinal;

    {....}

 const
   WindowTitle = 'a program name';
   Address = $A662D6;
   PokeValue = $4A;
   NumberOfBytes = 2;

    {....}


 procedure TForm1.Button1Click(Sender: TObject);
 begin
   WindowName := FindWindow(nil, WindowTitle);

   if WindowName = 0 then
   begin
     MessageDlg('Program not running.', mtWarning, [mbOK], 0);
   end;

   ThreadId := GetWindowThreadProcessId(WindowName, @ProcessId);
   HandleWindow := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);

   GetMem(buf, 1);
   buf^ := Chr(PokeValue);
   WriteProcessMemory(HandleWindow, ptr(Address), buf, NumberOfBytes, Write);
   FreeMem(buf);
   CloseHandle(HandleWindow);
 end;



Источник - Проект "Delphi World" © Выпуск 2002 - 2004
Автор проекта: Акулов Николай



   Rambler's Top100             Яндекс цитирования