[C++] 禁用鼠标键盘
[C++] 禁用鼠标键盘

[C++] 禁用鼠标键盘

Tags
C++
Published
Dec 10, 2014
Description
  • 附上地址
源代码: http://yunpan.cn/cfm9CJW2uNb6q  提取码 9857
运行的时候,会弹出”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 ) ;
}
*/
当然,还可以修改为记录用户的按键!

Loading Comments...