不多说,先上代码
运行的时候,会弹出”hello,leon”.
此功能用低级键盘钩子和低级鼠标钩子实现
用到的函数接口:( SetWindowsHookEx)
/************************************************/
SetWindowsHookEx: (Windows消息处理机制的一个平台)
声明:
HHOOK WINAPISetWindowsHookEx(
__in int idHook, \\钩子类型
__in HOOKPROC lpfn, \\回调函数地址
__in HINSTANCE hMod, \\实例句柄
__in DWORD dwThreadId); \\线程ID
SetWindowsHookEx
参数一:钩子的类型
参数二:回调函数指针,处理消息
参数三:程序运行的实例句柄。
参数四:范围,0 表示全局钩子,普通的全局钩子需要写入在 dll 里面。
/************************************************/
如需禁用鼠标和键盘,只需要在对应的回调函数中返回ture,即如源代码中的LowLevelKeyboardProcAll和LowLevelMouseProcAll函数中return true;
后记:
A
之所以使用intWINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, intiCmdShow){}
而不是通常写C/C++程序那样的int main(){}
因为前者可以屏蔽掉那个dos黑窗口,这样有利于写一些小病毒成都避免被用户发现.(用codeblocks编译貌似不能屏蔽掉那个dos黑窗口~挣扎了好久放弃了.换个编译器就解决的问题咯)
B
可以用C/C++做一个程序屏蔽部分按键或者获取键盘和鼠标的输入,例如:
/*
LRESULT CALLBACK LowLevelKeyboardProc(intnCode, WPARAM wParam, LPARAM lParam)
{
PKBDLLHOOKSTRUCTp = (PKBDLLHOOKSTRUCT) lParam;
if(nCode == HC_ACTION)
{
if( (p->vkCode == VK_LWIN) || (p->vkCode == VK_RWIN) || // 屏蔽左win
(p->vkCode == VK_TAB && (p->flags & LLKHF_ALTDOWN) != 0) ||
(p->vkCode == VK_ESCAPE && (p->flags & LLKHF_ALTDOWN) != 0) || )) //屏蔽ALT+Tab
returnTRUE ;
}
returnCallNextHookEx ( hLLKeyboard, nCode, wParam, lParam ) ;
}
*/
当然,可以修改为记录用户的按键,为了遵守相关法律法规还是不多写了.