首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

键盘记录工具(支持汉语)

2012-11-22 
键盘记录工具(支持中文)看到网上有很多键盘记录工具,技痒,于是自己动手写了一个。记录键盘,很显然需要使用

键盘记录工具(支持中文)

       看到网上有很多键盘记录工具,技痒,于是自己动手写了一个。

       记录键盘,很显然需要使用钩子。如果只是记录所按下的按键,使用WH_KEYDOWN_LL即可,此钩子可以拦截所有按下键盘的动作(除极少数键外)。但是如果要记录通过输入法输入的中文字符,那么WH_KEYDOWN_LL是不够的,这里需要使用WH_GETMESSAGE钩子。这个钩子拦截所有从消息队列中取出的消息。而windows上所有的输入法基本上都是采用将输入字符翻译成汉字之后,通过PostMessage将汉字回发给应用程序。所以利用WH_GETMESSAGE钩子,在应用程序从消息队列中取出汉字消息之前对消息进行拦截,从而记录。

       下面是HOOKDLL中的主要代码:

       WH_GETMESSAGE全局钩子,其钩子回调函数必须写在DLL中,不能通过传递函数指针的方式,将回调函数体写在其他Model中。

这里采用内存文件映射的方法来达到数据共享。共享的数据包括记录线程的ID,中文字符。回调函数在拦截到中文字符消息时,将中文字符保存到共享内存中,然后通过PostThreadMessage通知记录线程。

WM_IME_COMPOSITION:当输入法将转换后的中文字符推送到应用程序时,应用程序会处理此消息。

键盘记录工具(支持汉语)键盘记录工具(支持汉语)

这里在记录中文输入的同时,还记录的了当前所输入的窗口标题。

个别字符有乱码的情况,这是因为部分不可见字符没有进行屏蔽。

这个工具可以记录大部分中午输入,效率也还是很不错的,正常运行后,基本不会影响系统的正常使用。

键盘记录工具(支持汉语)

热点排行