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

📄 unit_hook.~pas

📁 口袋西游。明文包截取。只需要修改发包CALL地址。就可以使用了。
💻 ~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 + -