⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classcallback.pas

📁 很多人想要研究的真彩传奇2客户端,一般来说传奇2的客户端是256色的,现在出了个飞尔真彩传奇,想必很吸引大家的眼球.现在把我收藏的拿出来一起共享
💻 PAS
字号:
{------------------------------------------------------------------------------}
{ 单元名称: ClassCallback.pas                                                  }
{                                                                              }
{ 单元作者: savetime (savetime2k@hotmail.com, http://savetime.delphibbs.com)   }
{ 创建日期: 2004-06-21 13:58:43                                                }
{                                                                              }
{ 功能介绍:                                                                    }
{ A generic solution of make class method to windows callback function         }
{                                                                              }
{ 使用说明:                                                                    }
unit ClassCallback;

interface

  type TCallbackInstance = array [1..18] of Byte;
  procedure MakeCallbackInstance(var Instance: TCallbackInstance;
    ObjectAddr: Pointer; FunctionAddr: Pointer);

implementation

  {----------------------------}
  { CallbackCode DASM          }
  {----------------------------}
  {    MOV EAX, [ESP];         }
  {    PUSH EAX;               }
  {    MOV EAX, ObjectAddr;    }
  {    MOV [ESP+4], EAX;       }
  {    JMP FunctionAddr;       }
  {----------------------------}
  procedure MakeCallbackInstance(var Instance: TCallbackInstance;
    ObjectAddr: Pointer; FunctionAddr: Pointer);
  const CallbackCode: TCallbackInstance =
    ($8B,$04,$24,$50,$B8,$00,$00,$00,$00,$89,$44,$24,$04,$E9,$00,$00,$00,$00);
  begin
    Move(CallbackCode, Instance, SizeOf(TCallbackInstance));
    PInteger(@Instance[6])^ := Integer(ObjectAddr);
    PInteger(@Instance[15])^ := Integer(Integer(FunctionAddr) - Integer(@Instance) - 18);
  end;
  
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -