#define _WIN32_WINNT 0x0500
#include <windows.h>
HINSTANCE g_hInst = NULL;
HHOOK g_hmouse = NULL;
HHOOK g_hkeyboard = NULL;
#pragma data_seg ("MySec")
HWND g_hWnd = NULL;
#pragma data_seg()
BOOL WINAPI DllMain(
HINSTANCE hinstDLL, // handle to the DLL module
DWORD fdwReason, // reason for calling function
LPVOID lpvReserved // reserved
)
{
g_hInst = hinstDLL;
return TRUE;
}
LRESULT CALLBACK MouseProc(
int nCode, // hook code
WPARAM wParam, // message identifier
LPARAM lParam // mouse coordinates
)
{
if(WM_RBUTTONDOWN != wParam)
{
return CallNextHookEx(g_hmouse,nCode,wParam,lParam);
}
return 1;
}
LRESULT CALLBACK LowLevelKeyboardProc(
int nCode, // hook code
WPARAM wParam, // message identifier
LPARAM lParam // message data
)
{
PKBDLLHOOKSTRUCT p = NULL;
p = (PKBDLLHOOKSTRUCT)lParam;
if(VK_F2 == p->vkCode)
{
::SendMessage(g_hWnd,WM_CLOSE,0,0);
UnhookWindowsHookEx(g_hmouse);
UnhookWindowsHookEx(g_hkeyboard);
}
else if(VK_F4 == p->vkCode && (0 != (p->flags & LLKHF_ALTDOWN)) ||
VK_ESCAPE == p->vkCode || VK_F1 == p ->vkCode ||
VK_LWIN == p->vkCode || VK_RWIN == p->vkCode ||
VK_TAB == p->vkCode && (0 != (p->flags & LLKHF_ALTDOWN)) ||
VK_ESCAPE == p->vkCode && (0 != (p->flags & LLKHF_ALTDOWN)) ||
VK_ESCAPE == p->vkCode && ((GetKeyState(VK_CONTROL) & 0X8000) !=0)
)
{
return 1;
}
else
{
return CallNextHookEx(g_hkeyboard,nCode,wParam,lParam);
}
}
int SetHook(HWND hWnd)
{
g_hWnd = hWnd;
g_hmouse = SetWindowsHookEx(WH_MOUSE,MouseProc,g_hInst,0);
//g_hkeyboard = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,g_hInst,0);
g_hkeyboard = SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,g_hInst,0);
return 1;
}
低级键盘钩子,勾你所想
需积分: 9 74 浏览量
2008-09-20
18:04:09
上传
评论
收藏 182KB RAR 举报
jay的Fans
- 粉丝: 10
- 资源: 4