?? unit_hook.pas
字號(hào):
unit Unit_Hook;
interface
uses
Windows, Forms, SysUtils,Classes, ExtCtrls, Controls, StdCtrls,Dialogs;
const
_KeyPressMask=$80000000;//鍵盤(pán)掩碼常量
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過(guò)程
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已創(chuàng)建則顯示隱藏窗口
begin
if title='口袋西游' then
begin
try
SetWindowPos(Hwnd,HWND_TOP,0,0,0,0,SWP_NOSIZE);//將游戲窗口移動(dòng)到左上角,便于觀察
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.
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -