unity怎么设置键盘长按事件_小伙利用VC++打造“键盘钩子”,实现系统键盘监控显示...

2d5c4f334cd4d595768cf656e94b5b3f.png

键盘记录功能一直是木马等恶意软件窥探用户隐私的标配,那么这个功能是怎么实现的呢?在Ring3级下,微软就为我们内置了一个Hook窗口消息的API,也就是SetWindowsHookEx函数,这个函数能够实现优先拦截提交给特定窗口的信息,并进行拦截者需要的处理,然后再提交给窗口函数或是下一个钩子函数,函数第一个参数为idHook,需要设置钩子的类型,在以下代码样例中我们选择安装的钩子类型为WH_GETMESSAGE,用来拦截WM_KEYDOWN键盘信息。

1a456230f5aa58f87c9b6474ae567077.png

VC++ 键盘消息:显示用户操作键盘事件,类似与监控用户按下了键盘上的哪个键,当你按下键的时候,按下键盘对应的字符会显示出来,如示例截图所示,是一个键盘钩子事件。

代码测试截图:

95505e5120ac126d18ea73fa918b404c.png

源码截图:

1f4c42b198d5e0a02938e8659d71f433.png

最后,如果你想学C/C++可以私信小编“01”获取素材资料以及开发工具哦!

b56ff644535f97c7635fc632af7a46c8.png
vc++ KeyMessage 监听键盘按键状态,代码中有丰富的注释,一步一步的讲解,程序虽然简单,但通过它了解到的知识有很多,部分代码释义摘录:WinMain:Windows程序的入口函数。    WINAPI :在应用程序回调函数中作为一个返回值的样式,当Windows的外壳(Windows9X的资源管理器)侦测到使用者意欲执行一个Windows程序,于是调用加载器把该程序加载,然后调用C startup code,后者再调用WinMain,开始    执行程序。WinMain的四个参数由操作系统传递进来。   创建一个完整的窗口需要经过下面四个操作步骤:    设计一个窗口类;    注册窗口类;    创建窗口;    显示及更新窗口;      窗口的显示类型CS_HREDRAW窗口水平重画,ClassStyle_horizontal(水平的,与地平线平行的) redraw,CS_VREDRAW窗口水平重画ClassStyle_vertical(垂直的,竖的) redraw 如果选择水平重绘和竖直重绘,用鼠标拖动窗口后则文字消失,如果属性设置为NULL,则拖动变换大小文字还照样显示,CreateWindow只产生窗口,并不显示窗口,所以稍后我们必需再利用ShowWindow将他显示在屏幕上,又,我们希望先送一个WM_PAINT给窗口,以驱动窗口的绘图操作,所以调用UpdateWindow,DispatchMessage会将消息传给窗口函数去处理。消息发生之时,操作系统根据当时的状态,为它标明了所属窗口而窗口所属的窗口类又已经明白标识了窗口函数,(也就是wndcls.lpfnWndProc),所以DispatchMessage自有脉络可寻。   窗口的生命中枢:窗口函数。窗口函数通常利用switch/case方式判断消息的种类,以决定处置方式,由于它是被Windows系统所调用的,所以这是一种call back 函数,意思是指在你的程序中,被Windows系统调用的函数,这些函数虽然是由你设计, 但是永远不会也不该被你调用,他们是为Windows系统准备的…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值