📄 callself.pas
字号:
unit CallSelf;
interface
uses Windows;
type
TInstallHook = procedure();stdcall;
TUnHook = procedure();stdcall;
TGetShareData = function ():Pointer;stdcall;
var
DLLInstallHook : TInstallHook = nil;
DLLUnHook : TUnHook = nil;
DllGetShareData : TGetShareData = nil;
procedure InstallHookA;
procedure UnHookA;
function GetShareDataA : Pointer;
implementation
procedure LoadDllFunc;
var
dllHandle : Thandle;
ThisDLLName : array [0..MAX_PATH] of char;
begin
GetModuleFileName(HInstance, @ThisDLLName[0], MAX_PATH);
dllHandle := LoadLibrary(@ThisDLLName[0]);
if dllHandle > 0 then begin
DLLInstallHook := GetProcAddress(dllHandle,'MsgHookOn');
DLLUnHook := GetProcAddress(dllHandle,'MsgHookOff');
DllGetShareData := GetProcAddress(dllHandle,'GetShareData');
end;
end;
procedure InstallHookA;
begin
if @DllInstallHook = nil then begin
LoadDllFunc;
end;
if @DllInstallHook <> nil then
DllInstallHook;
end;
procedure UnHookA;
begin
if @DllUnHook = nil then begin
LoadDllFunc;
end;
if @DllUnHook <> nil then
DllUnHook;
end;
function GetShareDataA : Pointer;
begin
Result := nil;
if @DllGetShareData = nil then begin
LoadDllFunc;
end;
if @DllGetShareData <> nil then
Result := DllGetShareData;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -