library Project2; uses SysUtils, Classes, windows, Dialogs; {$R *.res} function GetModuleHandleA(a: string): Integer; stdcall; external 'kernel32.dll' {取程序或DLL句柄 a:DLL名 } function GetProcAddress(a: integer; b: string): Integer; stdcall; external 'kernel32.dll' {取DLL函数地址 a:模块句柄 b:函数名 } function GetCurrentProcess: Integer; stdcall; external 'kernel32.dll' {取伪句柄 } function Test11(aa: string): string; begin Result := aa; end; var b: array[1..3] of byte = ($C2, $10, $0); function Test2(): Integer; var a: Integer; c: Integer; WriteByte: DWORD; begin //GetModuleHandleA('user32.dll'); a := GetModuleHandleA('user32.dll'); c := GetProcAddress(a, 'SetWindowsHookExA'); WriteProcessMemory(GetCurrentProcess(), Pointer(c), @b[1], 3, WriteByte); ShowMessage('hook成功'); Result := 1; end; exports Test2; begin Test2(); end.