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


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

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) 安装进程内鼠标钩子

钩子编程(HOOK) 安装进程内键盘钩子 (1)的更多相关文章

  1. 基于C#实现的HOOK键盘钩子实例代码

    本文所述为基于C#实现的HOOK实例,该实例可用来屏蔽系统热键.程序主要实现了安装钩子.传递钩子.卸载钩子等功能.在传递钩子中:<param name="pHookHandle&quo ...

  2. vue-router 路由钩子(hook)

    钩子(hook)—劫持机制 路由钩子(守卫钩子): 1.全局钩子2.某个路由独享的钩子3.组件内钩子 三种路由钩子中都涉及到了三个参数,官方(https://router.vuejs.org/zh-c ...

  3. 在WPF中快速实现键盘钩子

    大部分的时候,当我们需要键盘事件的时候,可以通过在主窗口注册KeyBinding来实现,不过,有的时候我们需要的是全局键盘事件,想在任何一个地方都能使用,最开始的时候我是通过键盘钩子来实现的, 不过键 ...

  4. 钩子编程(HOOK) 屏蔽全部按键、鼠标及系统功能键 (4)

    摘要:上篇文章<钩子编程(HOOK) 安装系统全局钩子>已经具体的解说了全局钩子的安装.本文将增强一下钩子的功能.实现屏蔽全部按键鼠标与系统功能键.要实现这个功能.须要安装两个全局钩子,& ...

  5. 【windows核心编程】系统消息与自定义钩子(Hook)使用

    一.HOOk Hook是程序设计中最为灵活多变的技巧之一,在windows下,Hook有两种含义: 1.系统提供的消息Hook机制 2.自定义的Hook编程技巧 其中,由系统提供的消息钩子机制是由一系 ...

  6. 2.添加键盘钩子。向进程中注入dll

    学习笔记 1.首先要建立mfc的动态链接库.在def文件中放入要导出的函数名. 2.添加函数如下 //安装钩子 //HHOOK SetWindowsHookEx( // int idHook,//钩子 ...

  7. Hook钩子编程

    钩子(Hook),是Windows消息处理机制的一个平台,钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统,以监视指定窗口的某种消息.每当特定的消息发出,在没有到达目的窗口前,钩子程序就先 ...

  8. hook键盘钩子 带dll

    library Key; uses SysUtils, Classes, HookKey_Unit in 'HookKey_Unit.pas'; {$R *.res} exports HookOn,H ...

  9. HOOK函数(一)——进程内HOOK

    什么是HOOK呢?其实很简单,HOOK就是对Windows消息进行拦截检查处理的一个函数.在Windows的消息机制中,当用户产生消息时,应用程序通过调用GetMessage函数取出消息,然后把消息放 ...

随机推荐

  1. POJ 3264.Balanced Lineup-RMQ(ST)详解

    先写一道水题的博客,为后面要写的博客做一个铺垫. ヾ(◍°∇°◍)ノ゙ RMQ(Range Minimum/Maximum Query),即区间最值查询,对于长度为n的数列A,回答若干询问RMQ(A, ...

  2. Error:scalac: Error: org.jetbrains.jps.incremental.scala.remote.ServerException

    Error:scalac: Error: org.jetbrains.jps.incremental.scala.remote.ServerException reason:JDK与Scala的版本不 ...

  3. UVA 1395 Slim Span 最小生成树

    题意: 给你一个图,让你求这个图中所有生成树中满足题目条件的,这个条件是生成树中最长边与最短边的差值最小. 思路: 根据最小瓶颈生成树的定义:在一个有权值的无向图中,求一个生成树最大边的权值尽量小.首 ...

  4. object的hashCode与equals

    JAVA代码:    public static void main(String[] args)    {        Object obj1 = new Object();        Obj ...

  5. elasticsearch REST api

    elasticsearch REST api========================================命令模式:<REST Verb> /<Index>/ ...

  6. java trim start end space

    Java program that trims starts and ends public class Program { public static String trimEnd(String v ...

  7. (转)代码中实现button

    链接地址:http://www.cnblogs.com/hukezhu/p/4500206.html 随着iOS开发发展至今,在UI制作上逐渐分化为了三种主要流派:使用代码手写UI及布局:使用单个xi ...

  8. 最近公共祖先 Least Common Ancestors(LCA)算法 --- 与RMQ问题的转换

    [简介] LCA(T,u,v):在有根树T中,询问一个距离根最远的结点x,使得x同时为结点u.v的祖先. RMQ(A,i,j):对于线性序列A中,询问区间[i,j]上的最值.见我的博客---RMQ - ...

  9. 分布式协调服务Zookeeper

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  10. Windows 8.1中WinRT的变化(二)——新增功能

    首先我们来看看现有控件中新增的功能: FlipView编程方式切换时支持平滑滚动: 在Windows8中,FlipView在用手触控翻页的时候是有动画效果的,但当我们使用键盘或代码编程翻页时,却没有这 ...