1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
#define _WIN32_WINNT 0x0400
#include <windows.h>
#define WH_KEYBOARD_LL 13
HINSTANCE current;
HHOOK hookKeyboard;
LRESULT CALLBACK LLKeyboard (int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode == HC_ACTION)
{
KBDLLHOOKSTRUCT kbStruct = *((KBDLLHOOKSTRUCT *)lParam);
switch(wParam)
{
case WM_KEYDOWN:
/* block windows key*/
if (kbStruct.vkCode == VK_LWIN || kbStruct.vkCode == VK_RWIN)
return 1;
/* block esc + ctrl */
if (kbStruct.vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL))
return 1;
/* block print screen */
if (kbStruct.vkCode == VK_SNAPSHOT)
return 1;
/* block alt+F4 */
if (kbStruct.vkCode == VK_F4 && ((kbStruct.flags & LLKHF_ALTDOWN) != 0) )
return 1;
/* block alt+Tab */
if (kbStruct.vkCode == VK_TAB && kbStruct.flags & LLKHF_ALTDOWN )
return 1;
/* block F1...F12 keys */
if (kbStruct.vkCode == VK_F1 || kbStruct.vkCode == VK_F2 || kbStruct.vkCode == VK_F3 ||
kbStruct.vkCode == VK_F4 || kbStruct.vkCode == VK_F5 || kbStruct.vkCode == VK_F6 ||
kbStruct.vkCode == VK_F7 || kbStruct.vkCode == VK_F8 || kbStruct.vkCode == VK_F9 ||
kbStruct.vkCode == VK_F10 || kbStruct.vkCode == VK_F11 || kbStruct.vkCode == VK_F12)
return 1;
/* block ctrl + alt + del */
if (kbStruct.vkCode == VK_DELETE && GetAsyncKeyState(VK_CONTROL)
&& GetAsyncKeyState(VK_MENU) )
return 1;
}
}
return CallNextHookEx(hookKeyboard, nCode, wParam, lParam);
}
extern "C" int __stdcall initHook()
{
if( !hookKeyboard )
{
hookKeyboard = SetWindowsHookEx(WH_KEYBOARD_LL, LLKeyboard, current, 0);
}
return (int) hookKeyboard;
}
extern "C" void __stdcall stopHook()
{
if(hookKeyboard)
{
UnhookWindowsHookEx(hookKeyboard);
hookKeyboard = 0;
}
}
BOOL WINAPI DllMain (HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
current = hDll;
}
if (dwReason == DLL_PROCESS_DETACH)
{
stopHook();
}
return 1;
} |
Partager