zoukankan      html  css  js  c++  java
  • 钩子编程(HOOK) 安装进程内键盘钩子 (1)

    摘要:钩子能够监视系统或进程中的各种事件消息。截获发往目标窗体的消息并进行处理。这样,我们就能够在系统中安装自己定义的钩子,监视系统中特定事件的发生。完毕特定的功能,比方截获键盘、鼠标的输入。屏幕取词,日志监视等等。



    以下演示怎样安装进程内键盘钩子,


    Step 1:打开VC6.0。创建一个基于对话框的MFC应用程序。


    Step 2:在BOOL CHookDlg::OnInitDialog()函数上面编写例如以下代码:(注意是在上面编写。不是在OnInitDialog()里面)

    HHOOK g_hKeyboard = NULL;
    
    LRESULT CALLBACK KeyboardProc(int ncode, WPARAM wParam, LPARAM lParam)
    {
    	return 1;
    }


    Step 3:在OnInitDialog()函数里面安装键盘钩子。复制粘贴例如以下代码,

    g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());


    Step 4:编译->链接->执行:这时候你发现键盘事件已经不能响应了~~~


    当然。假设你仅仅想屏蔽掉空格键,你能够这样写,

    LRESULT CALLBACK KeyboardProc(int ncode, WPARAM wParam, LPARAM lParam)
    {
    	if (VK_SPACE == wParam)
    		return 1;
    	else
    		return CallNextHookEx(g_hKeyboard, ncode, wParam, lParam);
    }


    假设按下的是空格键,直接返回,告诉系统。该消息已运行。

    否则将消息传给下一个钩子~~~

    另一种就是,须要屏蔽一些组合键,比方:Alt+F4。能够用例如以下方式实现,

    LRESULT CALLBACK KeyboardProc(int ncode, WPARAM wParam, LPARAM lParam)
    {
    	if (VK_F4 == wParam || (1 == (lParam>>29 & 1)))
    		return 1;
    	else
    		return CallNextHookEx(g_hKeyboard, ncode, wParam, lParam);
    }


    lParam參数各位的含义例如以下:


    想了解很多其它关于进程内钩子。能够阅读这篇文章《钩子编程(HOOK) 安装进程内鼠标钩子

  • 相关阅读:
    [中文翻译] ASP.NET 5 简介(Introducing ASP.NET 5,原作ScottGu 2015/2/23)
    会写网页 就会写手机APP #2-- 范例修正 , Hybrid Mobile Apps for ASP.NET Developers (Apache Cordova)
    vue事件处理
    vue渲染
    vue数组和对象方法
    vue样式绑定
    vue模板语法与绑定指令
    墨刀的使用
    ajax基础一
    解构赋值中圆括号问题及解构赋值的用途
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6789543.html
Copyright © 2011-2022 走看看