最近做了一个小工具,可以远程控制锁定和解锁计算机,锁定就是通过禁用鼠标和键盘事件来限制,使用的WINDOWS的HOOK函数,下面分享一下具体的实现方法:

1、首先是两个钩子函数:

HHOOK hook_hwnd_keyboard = NULL;
HHOOK hook_hwnd_mouse = NULL;
HMODULE g_module;

// 鼠标事件
LRESULT CALLBACK MyHookFunMouse(int nCode, WPARAM wParam, LPARAM lParam)
{
// 鼠标所有事件都不处理
return 1;
}

// 键盘事件
LRESULT CALLBACK MyHookFunKeyBoard(int nCode, WPARAM wParam, LPARAM lParam)
{
PKBDLLHOOKSTRUCT pVirKey = (PKBDLLHOOKSTRUCT)lParam;

if (nCode >= 0)
{
// 按键消息
switch (wParam)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
case WM_KEYUP:
case WM_SYSKEYUP:
switch (pVirKey->vkCode)
{
case VK_LWIN:
case VK_RWIN:
return 1;
break;
}
return 1;
break;
}
}

return CallNextHookEx(hook_hwnd_keyboard, nCode, wParam, lParam);
}

2、然后分别把鼠标和键盘这两个函数设置进去;这样就达到了锁定电脑,鼠标和键盘都不可用了;

PS:测试的时候记得两个函数不要同时测,否则就把自己电脑锁死了

hook_hwnd_keyboard = SetWindowsHookEx(WH_KEYBOARD_LL, MyHookFunKeyBoard, g_module, 0);
hook_hwnd_mouse = SetWindowsHookEx(WH_MOUSE_LL, MyHookFunMouse, g_module, 0);

3、取消HOOK函数的设置进行解锁

UnhookWindowsHookEx(hook_hwnd_keyboard);
UnhookWindowsHookEx(hook_hwnd_mouse);