دنیای برنامه نویسی دلفی - Delphi Programming

دنیای برنامه نویسی دلفی از مقدماتی تا پیشرفته ( آموزش ) - Delphi Programming

تعریف دوباره و تغییر در اجرای توابع ای پی آی ویندوز
ساعت ٢:٠۳ ‎ق.ظ روز شنبه ٢٤ شهریور ۱۳۸٦  کلمات کلیدی: توابع ای پی آی

شیوه تعریف دوباره و تغییر در اجرای توابع ای پی آی ویندوز برای استفاده در برنامه خود


type PImportJump = ^TImportJump;
     TImportJumP = packed record
                     JMP : WORD;
                     Proc : ^POINTER;
                   end;
 
function NewRectangle(_handle: THANDLE; _left, _top, _right, _bottom: integer): BOOL; stdcall;
begin
  ShowMessage(IntToStr(_right - _left) + 'x' + IntToStr(_bottom - _top));
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var p : PImportJump;
    OldProtect : INTEGER;
begin
  p := @Windows.Rectangle;
  if VirtualProtect(p^.Proc, 4, PAGE_EXECUTE_READWRITE, @OldProtect) = false then halt;
  p^.Proc^ := @NewRectangle;
  if VirtualProtect(p^.Proc, 4, OldProtect, @OldProtect) = false then halt;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Windows.Rectangle(Form1.Canvas.Handle, 10, 10, 100, 100);
end;