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

📄 qqhook.dpr

📁 很经典的代码 2004版可以通过 但没有试过以后更高的版本 系统高人指点
💻 DPR
字号:
library qqhook;

uses
    Windows,messages,HookType;

var
  MemFile: THandle;
  Shared: PShared;

{撤消钩子过滤函数}
function UninstallHook: Boolean;
begin
  Freelibrary(Shared^.Moudle);
  Result := UnHookWindowsHookEx(Shared^.KeyHook) and UnHookWindowsHookEx(Shared^.ShellHook) and UnHookWindowsHookEx(Shared^.CallHook);
  UnmapViewOfFile(Shared);
  CloseHandle(memFile);
end;



function  KeyboardProc(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
const
  KeyPressMask = $80000000;
begin
  if iCode < 0 then
    Result := CallNextHookEx(Shared^.KeyHook,
       iCode,
      wParam,
      lParam)
  else begin
    if ((lParam and KeyPressMask) = 0) and (GetKeyState(vk_Control) < 0) and (wparam = Ord('F'))
    then
    begin
      Windows.MessageBox(0,'钩子已消除!','提示:',MB_ICONEXCLAMATION);
      UninstallHook;
    end;
    if (wParam = VK_RETURN) and (GetKeyState(VK_CONTROL) < 0) and (lParam >= 0) then
      begin
        SendMessage(Shared^.MainWnd,WM_USERCMD, UC_WINDESTROY, GetForegroundWindow);
      end;
    Result := CallNextHookEx(Shared^.KeyHook,iCode,wParam,lParam);
  end;
end;



function ShellProc(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  case iCode of
    HSHELL_WINDOWCREATED:
      PostMessage(Shared^.MainWnd,WM_USERCMD ,UC_WINCREATE,wParam);
  end;
  Result := CallNextHookEx(Shared^.ShellHook,iCode,wParam,lParam);
end;


function CallWndProc(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
type
  Msg = ^CWPSTRUCT;
var
  p : Msg;
begin
  p := Msg(lParam);
//Shared^.hwd := GetParent(p^.hwnd);
//只对前台窗口进行处理
  if (p^.message = WM_COMMAND) and (LOWORD(p^.wParam) = 1) then
    begin
      SendMessage(Shared^.MainWnd,WM_USERCMD, UC_WINDESTROY, GetForegroundWindow);
    end;
  Result := CallNextHookEx(Shared^.CallHook,iCode,wParam,lParam);
end;


//安装钩子
function InstallHook:Boolean;
begin
  Shared^.Moudle:=GetModuleHandle(PChar('qqhook'));
  Shared^.KeyHook   := SetWindowsHookEx(WH_KEYBOARD,
                                       @KeyboardProc,
                                     Shared^.Moudle,
                                                 0);
  Shared^.ShellHook := SetWindowsHookEx(WH_SHELL,
                                     @ShellProc,
                                     Shared^.Moudle,
                                                 0);
  Shared^.CallHook := SetWindowsHookEx(WH_CALLWNDPROC,
                                         @CallWndProc,
                                       Shared^.Moudle,
                                       0);
  if Shared^.KeyHook = 0 then
  begin
    Result := False;
    Exit;
  end;
  Result := true;
end;



procedure DllEntry(dwReason : integer);
begin
  case dwReason Of
    DLL_PROCESS_ATTACH:
      begin
        MemFile := OpenFileMapping(FILE_MAP_WRITE,False,HOOK_MEM_FILENAME);
        if MemFile = 0 then
          MemFile := CreateFileMapping($FFFFFFFF,nil,
            PAGE_READWRITE,
            0,
            SizeOf(TShared),
            HOOK_MEM_FILENAME);
        Shared := MapViewOfFile(MemFile,
          File_MAP_WRITE,
          0,
          0,
          0);
      end;
    DLL_PROCESS_DETACH:
      begin
        //UninstallHook;
      end;
    else;
  end;
end;


exports
  InstallHook;

begin
  DllProc := @DllEntry;
  DllEntry(DLL_PROCESS_ATTACH);
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -