/*------------------------------以下为头文件声明-------------------------*/
#ifndef GLOBALHOOKMANAGER1_H
#define GLOBALHOOKMANAGER1_H
#include <windows.h>
static HHOOK m_Mouse;//鼠标钩子句柄
static HHOOK m_Keyboard;//键盘钩子句柄
class GlobalHookManager
{
public:
GlobalHookManager();
~GlobalHookManager();
/**
Description:
安装鼠标钩子
@param 无
@return 无
*/
static void SetMouseHook();
/**
Description:
安装键盘钩子
@param 无
@return 无
*/
static void SetKeyBoardHook();
/**
Description:
取消鼠标钩子
@param 无
@return 无
*/
static void UnMouseHook();
/**
Description:
取消键盘钩子
@param 无
@return 无
*/
static void UnKeyBoard();
};
extern GlobalHookManager *GetGlobalHookManager();
void ReleeaseGlobalHookManager();
#endif // GLOBALHOOKMANAGER1_H
/*---------------------------------以下为类的功能实现-------------------------------*/
#include "GlobalHookManager.h"
GlobalHookManager::GlobalHookManager()
{
}
GlobalHookManager::~GlobalHookManager()
{
}
//鼠标回调函数
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)//全局钩子函数--屏蔽所有的鼠标事件
{
return 1;//如果是这些事件产生的话,就返回非0,即屏蔽掉这些事件,也就是安装有同类型的其他钩子,捕获不到同样的事件
}
//键盘回调函数
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM LowKey, LPARAM lParam)//--屏蔽所有的键盘事件
{
if (LowKey == VK_F12) // 后门
{
UnhookWindowsHookEx(m_Mouse);
UnhookWindowsHookEx(m_Keyboard);
}
if (LowKey == VK_RETURN)//回车键
{
return 0;
}
return 1;
}
//安装钩子
void GlobalHookManager::SetMouseHook()
{
m_Mouse = SetWindowsHookEx(WH_MOUSE_LL, MouseProc, GetModuleHandle(NULL), 0);
}
void GlobalHookManager::SetKeyBoardHook()
{
m_Keyboard = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, GetModuleHandle(NULL), 0);
}
//取消钩子
void GlobalHookManager::UnMouseHook()
{
UnhookWindowsHookEx(m_Mouse);
}
void GlobalHookManager::UnKeyBoard()
{
UnhookWindowsHookEx(m_Keyboard);
}
/*---------------------------------------以下为调用实例 -----------------------------------------*/
#include "GlobalHookManager.h"
int main(int argc, char *argv[])
{
GlobalHookManager keyboard_mouse_hook;
//禁用鼠标和键盘
keyboard_mouse_hook.SetMouseHook();
keyboard_mouse_hook.SetKeyBoardHook();
//主进程忙碌100s
for(int i=0;i<10;i++)
{
Sleep(10000);
}
//启用鼠标和键盘
keyboard_mouse_hook.UnMouseHook();
keyboard_mouse_hook.UnKeyBoard();
return 0;
}
/*--------------------------结束---------------------------*/