一个最简单的全局钩子程序--不用DLL 全局消息钩子是病毒吗

刚开始学习写钩子程序时只知道钩子的一些基本概念,不知道怎么用程序实现,网上的一些资料有的只浅显的讲了一下首先用SetWindowsHookEx安装钩子,然后再定义回调函数,将函数名传给SetWindowsHookEx作参数,还是未讲到具体的编程细节;还有的则长篇大论,又是将钩子封装成一个类什么的,又或是用MFC建立一个对话框工程,然后告诉读者,在这个头文件里加点什么,又在OnInitDialog函数里加点什么,搞得人是一头雾水,给人的感觉就是写一个钩子程序相当复杂。但其实,一个最简单的钩子函数,只需要短短的10来行代码就能实现。其源代码如下:

===============================================

//main.cpp

#include <windows.h>
#include <stdio.h>


#define_WIN32_WINNT0x0500//确保SetWindowsHookEx的第一个参数可用WH_KEYBOARD_LL

//或自已定义: “#defineWH_KEYBOARD_LL 13”

HHOOKMyHook;//接收由SetWindowsHookEx返回的旧的钩子

//回调函数声明,为了尽早见到亲切的主函数,将回调函数的定义写在最后面

int CALLBACK KeyboardProc(int code, WPARAMwParam, LPARAM lParam);

//主函数

int main()
{

//安装钩子
MyHook =SetWindowsHookEx( WH_KEYBOARD_LL,

(HOOKPROC)&KeyboardProc,//回调函数地址

GetModuleHandle(NULL),

NULL);


MSGmsg;

while(GetMessage (&msg, NULL, 0,0))//消息循环
{
TranslateMessage (&msg);
DispatchMessage (&msg);
};


UnhookWindowsHookEx(MyHook);

return0;

}

//回调函数,用于处理截获的按键消息

int CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAMlParam)
{
printf("%c",wParam);//输出按键信息,注意这里按下和弹起都会输出


一个最简单的全局钩子程序--不用DLL 全局消息钩子是病毒吗
returnCallNextHookEx(MyHook,code,wParam,lParam);//将消息还给钩子链,不要影响别人
}

==============================================

如果SetWindowsHookEx的第一个参数为WH_KEYBOARD,则只能截获本进程的消息;而如果为WH_KEYBOARD_LL,可截获所有按键消息,但这时消息参数lParam总是为1244872,而wParam参数总在按下按键时为256,弹起时为257,不知道为什么,等有时间再研究,同时敬请高手解答。

  

爱华网本文地址 » http://www.aihuau.com/a/25101018/370774.html

更多阅读

用最简单的方法剪五角星和花 五角星的剪法步骤视频

用最简单的方法剪五角星和花——简介用最简单的方法剪五角星和花用最简单的方法剪五角星和花——工具/原料纸剪刀用最简单的方法剪五角星和花——方法/步骤用最简单的方法剪五角星和花 1、备注一张纸,在对折.后在折四下用最简单的

PS.制作最简单的动态图片!!! 精 ps制作动态图

大家可能经常在网上会看到一些动态的图片,从一个位置移动到另一个位置,那么接下来我就教大家制作最简单的动态图片,我教的这个很简单,目的是抛砖引玉!PS.制作最简单的动态图片!!! 精——工具/原料PS软件PS.制作最简单的动态图片!!! 精——步骤/

最简单的汽车监控方法 汽车简单有效防盗方法

最简单的最省钱的汽车监控方法.汽车停在楼下,尽管很注意停放方式,不给别人带来麻烦,与邻里和睦相处,但总是被划。今天是钥匙,明天是钉子,实在是忍无可忍了,决心装一套汽车监控系统。上网查了一下,尽是一些监控系统广告,根本查不到有用的内

年龄的探密,一个最神奇的测算法! 神奇的心算法和十进制

(2013-06-14 16:24:14)  转载▼哈哈!好简单的数字游戏!本人不到三分钟破译其中奥妙!转载过来供朋友们思考——如同世上任何看似玄妙的事物其实都有它的客观规律,就看你能不能发现而已!一旦发现,你就能够触类旁通揭穿政治经济骗子们的伎

声明:《一个最简单的全局钩子程序--不用DLL 全局消息钩子是病毒吗》为网友好擁扌包分享!如侵犯到您的合法权益请联系我们删除