📄 unit_hook.~pas
字号:
unit Unit_Hook;
interface
uses
Windows, Forms, SysUtils,Classes, ExtCtrls, Controls, StdCtrls,Dialogs;
const
_KeyPressMask=$80000000;//键盘掩码常量
var
hNextHookProc: HHook;
procSaveExit: Pointer;
GameMemAddress:DWord;
GamePath,MyPath:string;
HostWndPro:Hwnd;
CanAttackMon:String;
Hwnd,MyHwnd: dword;
function sethook(lpHwnd:dword): bool; stdcall; export;
function endhook(lpHwnd:dword): bool; stdcall; export;
// procedure HotKeyHookExit; far;
function hookproc(iCode: Integer; wParam: WPARAM; lParam: LPARAM):LRESULT; stdcall;
implementation
uses Unit_Pop;
function sethook(lpHwnd:dword): bool; stdcall; export;
var hThread:dword;
begin
result := false;
MyHwnd:=lpHwnd;
if hnexthookproc <> 0 then
exit;
hThread :=GetWindowThreadProcessId(lpHwnd);
hNextHookProc := SetWindowsHookEx(WH_KEYBOARD, hookproc, HInstance, hThread);
Result := hNextHookProc <> 0;
end;
{procedure hotkeyhookexit;
begin
if hNextHookProc <> 0 then
endHook(Myhwnd);
ExitProc := procSaveExit;
end; }
function endhook(lpHwnd:dword): bool; stdcall; export;
var Pid,hProcess_N,num:dword;
huifu:Int64;
begin
MyHwnd:=lpHwnd;
if hNextHookProc <> 0 then
begin
huifu :=$6400813db868ff6a;
GetWindowThreadProcessId(lpHwnd,pid);
hProcess_N := OpenProcess(PROCESS_ALL_ACCESS, False, pid);
WriteProcessMemory(hProcess_N, pointer(CONST_JMP), @huifu, 8, num);
CloseHandle(hProcess_N);
UnhookWindowshookEx(hNextHookProc); // 解除 Keyboard Hook
hNextHookProc := 0;
end;
Result := hNextHookProc = 0;
end;
function HookProc(iCode: integer; wParam: wParam; lParam: lParam):LResult; stdcall;//HOOK过程
var
AppRect: TRect;
title: pchar;
begin
result := 0;
if iCode < 0 then
begin
CallNextHookEx(hnexthookproc, iCode, wParam, lParam);
result := 0;
Exit;
end;
if ((lParam and _KeyPressMask) = 0) and (wParam = vk_HOME) then//呼出窗口
begin
Hwnd := getforegroundwindow;
GetMem(title, 255);
getwindowtext(Hwnd, title, 255);//取得窗口名称
if Frm_Pop <> nil then
if kg then Frm_Pop.Hide
else Frm_Pop.Show
else //如果FrmPopWin已创建则显示隐藏窗口
begin
if title='浪漫庄园' then
begin
try
SetWindowPos(Hwnd,HWND_TOP,0,0,0,0,SWP_NOSIZE);//将游戏窗口移动到左上角,便于观察
GetWindowRect(Hwnd,AppRect);
//弹出窗口;
//showmessage(inttostr(hwnd));
HWND:=FindWindow(nil,'Tthol');
Application.Handle := HWND;
Frm_Pop := TFrm_Pop.Create(Application);
Frm_Pop.Left:=AppRect.Right-Frm_Pop.Width;
Frm_Pop.Top:=AppRect.top+23;
if kg then Frm_Pop.Hide else Frm_Pop.Show;
GamePath:=ExtractFilePath(Application.ExeName);
ShowCursor(true);
//_ToolShow := True;
finally
end;
end;
end;
result := 1;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -