随笔-86  评论-422  文章-13  trackbacks-0

发布这几天学习Hook搞出来的一个挺好玩的统计鼠标移动距离和键盘敲击次数的小程序

        引用:钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。可见,利用钩子可以实现许多特殊而有用的功能。因此,对于高级编程人员来说,掌握钩子的编程方法是很有必要的。 

    这几天一直在学习 Hook 的相关知识,然后自己做了个好玩的小程序,主要功能统计一天鼠标移动了多少米,还有键盘敲击了多少次,从发这篇 BLOG 开始计数,呵呵,自己觉得挺好玩了。
     
      
关于 Hook 的相关资料,网上有几篇不错的文章,这些文章都是有价值的参考资料,我还是直接引用地址吧,感兴趣的可以研究研究:
      微软HOOK专题 

      Using Hooks from C#

      消息钩子函数入门篇

      Global System Hooks in .NET
      
      键盘敲击计数器·.NET中实现Global Hook 

      HOW TO:在 Visual C# .NET 中设置窗口挂钩

      
      
为了避免闭门造车,程序中直接使用了 Georgi UserActivityHook 类,简单而适合我的程序,当然上面在几篇文章中,你会发现功能更强更完善的类库,那是后话 ^0^

      关于WH_KEYBOARD_LLlow-level hook and the WH_MOUSE_LLlow-level hook ,请参看我的前一篇学习笔记学习笔记-HOOK钩子(1)

      
我的小程序截图(截止到目前为止的统计信息):
   
   程序主界面:浮动界面,占的空间很小,可拖动
            print.bmp

   程序设置菜单 和 程序设置界面
          setting2.JPG  setting.JPG

      其中要说明的是显示器宽度指的是物理宽度,可以通过电子尺软件测量出来的。

      程序下载点击这里(运行程序,系统需要安装.NET Framework1.1或更高版本)

      仅供娱乐,源码在此处下载!!      欢迎大家提出宝贵意见,很乐意能够修改这个程序,满足更多人的需求。
      

关于81提出的问题:

      C#键盘钩子我也写过,当时是为了想把[和{互换一下,取得键值没问题,但互换总是不行,最后也就做罢,不知楼主能否实现?
      暂时没有时间写这个程序,不过可以先说一下思路,首先判断Hook到的键盘事件获得的键值,
      如果是 “{ ”键值 则模拟键盘事件发送 “[”键值 的消息,反之则发送 }

关于占用内存16M的问题:
      原因是使用了类的数组,而且长度很大,所以难免。。。
      有机会我会完善一下的

      
            

      

     

           

posted on 2006-03-30 01:27 秋雨飘飞 阅读(5360) 评论(101) 编辑 收藏

评论:
评论共2页: 上一页 1 2 
#2楼 2006-03-30 05:39 | boy0371[未注册用户]
麻烦发一份源码 谢谢
boy0371@gmail.com

 回复 引用   
#3楼 2006-03-30 07:49 | inger[未注册用户]
喜欢这个程序,我也想实现这个效果!
inger55555@yahoo.com
谢谢

 回复 引用   
#4楼 2006-03-30 08:12 | XNet      
谢谢,给能我一份吗?
xnet041010@163.com

 回复 引用 查看   
#5楼 2006-03-30 08:24 | Bolik      
Bolik@163.com
 回复 引用 查看   
#6楼 2006-03-30 08:40 | 一滴水      
yidishui1570@gmail.com
谢谢 哦

 回复 引用 查看   
#7楼 2006-03-30 08:48 | POLARIS      
希望能够获得源代码。我想自己研究一下。邮箱: tom_polaris@tom.com
 回复 引用 查看   
#8楼 2006-03-30 08:51 | 烟雨阁[未注册用户]
给我一个吧,谢了!
xibeifeijian@hotmail.com

 回复 引用   
#9楼 2006-03-30 08:56 | kriswu[未注册用户]
偶也要一份代码,谢谢
kriswu#gmail.com

 回复 引用   
#10楼 2006-03-30 08:57 | sanni:mylove      
要一个,thanks :)
michaelyang_224#hotmail.com

 回复 引用 查看   
#11楼 2006-03-30 09:02 | 刘国才[未注册用户]
我也要一份
yjlft@163.com
谢谢

 回复 引用   
#12楼 2006-03-30 09:06 | 萧寒      
蛮无聊的软件,呵呵
 回复 引用 查看   
#13楼 2006-03-30 09:12 | sunw[未注册用户]
wbms168@163.com
谢谢

 回复 引用   
#14楼 2006-03-30 09:15 | GoKu[未注册用户]
可以发一份给我吗?
GoKu.CN@Gmail.COM

 回复 引用   
#15楼 2006-03-30 09:21 | vejson      
vjeson@msn.com给我一份,多谢
 回复 引用 查看   
#16楼 2006-03-30 09:34 | 亦续缘      
chenzhitong1984@163.com,谢谢
 回复 引用 查看   
#17楼 2006-03-30 09:36 | 浮云      
scfido@hotmail.com
非常感谢,一起研究一下。

 回复 引用 查看   
#18楼 2006-03-30 09:51 | netx[未注册用户]
lkf5_303@163.com
谢谢,一起研究研究

 回复 引用   
#19楼 2006-03-30 09:57 | xo[未注册用户]
我也要一份:
pcgreen@21cn.com

 回复 引用   
#20楼 2006-03-30 10:29 | Nick Yao      
我也想要一份来学习学习~~

nick_su@ismart.com.cn

 回复 引用 查看   
#21楼 2006-03-30 11:24 | luoboqingcai[未注册用户]
cooltaotailang@163.com
 回复 引用   
#22楼 2006-03-30 11:44 | 状-元[未注册用户]
可以发给我一份吗?
谢谢了先
huranyizhou@gmail.com

 回复 引用   
#23楼 2006-03-30 11:49 | ChuPaChuPs[未注册用户]
我也要一份看看,
ChuPaChuPs.ZMZ#gmail.com

@换了,别忘记哦,谢谢

 回复 引用   
#24楼 2006-03-30 12:24 | ChuPaChuPs[未注册用户]
用了一下,占用内存好厉害啊...
我机器上16M了...

 回复 引用   
#25楼 2006-03-30 12:48 | zitiger      
BugTiger@hotmail.com

我要一份.


 回复 引用 查看   
#26楼 2006-03-30 12:49 | 81      
C#键盘钩子我也写过,当时是为了想把[和{互换一下,取得键值没问题,但互换总是不行,最后也就做罢,不知楼主能否实现?
 回复 引用 查看   
#27楼 2006-03-30 13:08 | 寒冷的冰      
dingbing@jztele.com

发个源码,谢谢了。

 回复 引用 查看   
#28楼 2006-03-30 13:17 | echo[未注册用户]
holged#gmail.com謝謝
 回复 引用   
#29楼 2006-03-30 13:35 | ekeen      
发个源码
hiekeen@gmail.com

 回复 引用 查看   
#30楼 2006-03-30 13:53 | Daniel.Wu[未注册用户]
想学习一下,如可能请发一份源码。谢谢!
mail4contact@gmail.com

 回复 引用   
#31楼 2006-03-30 13:54 | netprawn[未注册用户]
netprawn@msn.com
谢谢啊,呵呵!

 回复 引用   
#32楼 2006-03-30 13:56 | 一唯      
haha,有意思。看看自己一天下来鼠标移动有多远
对了,源码给俺一份,3Q
song.holy@gmail.com

 回复 引用 查看   
#33楼 2006-03-30 14:14 | wferr0619@gmail.com[未注册用户]
学习以下!
 回复 引用   
#34楼 2006-03-30 15:27 | 高飞[未注册用户]
我也想要一份源代码,谢谢了。
flyhigh.mei@gmail.com

 回复 引用   
#35楼 2006-03-30 15:31 | what?[未注册用户]
what25@tom.com
谢谢

 回复 引用   
#36楼 2006-03-30 16:29 | numen      
不错,向你学习。比我做的强,想参考下
zichun2002@sohu.com
3qu

 回复 引用 查看   
#37楼 2006-03-30 17:04 | reokok[未注册用户]
请给一份源码,谢谢
reokok@gmail.com

 回复 引用   
#38楼 2006-03-30 17:05 | yukaizhao[未注册用户]
yukaizhao@gmail.com
谢谢

 回复 引用   
#39楼 2006-03-30 17:33 | nulluser[未注册用户]
nulluser@126.com
 回复 引用   
#40楼 2006-03-30 17:38 | wwwww[未注册用户]
www.xiaodong1567@gmail.com
谢谢

 回复 引用   
#41楼 2006-03-30 18:09 | xiexie[未注册用户]
yc8244@163.com
 回复 引用   
#42楼 2006-03-30 19:01 | mzl[未注册用户]
我也要。mingzaili@gmail.com
thank you!

 回复 引用   
#43楼 2006-03-30 20:53 | vagabond
netdalanhan@126.com 谢谢
 回复 引用   
#44楼 2006-03-30 22:19 | Bankey      
fengbinhua@163.com

thanks a lot!

 回复 引用 查看   
#45楼[楼主] 2006-03-30 22:35 | 秋雨飘飞      
以上邮件已发,40多个地址,还有地址不规则的,COPY粘贴了N次。。。
 回复 引用 查看   
#46楼 2006-03-30 23:38 | Tmouse      
有意思!
csdth@yahoo.com.cn
谢谢!

 回复 引用 查看   
#47楼 2006-03-31 10:49 | XMLOL[未注册用户]
emir123456@hotmail.com


tks

 回复 引用   
#48楼 2006-03-31 10:51 | pizzacrystal[未注册用户]
也曾试过自己用c#写hook程序,却老是失败,正好学习一下^^
pizzacrystal@gmail.com
谢谢了~~

 回复 引用   
#49楼 2006-03-31 11:10 | hstc[未注册用户]
hstc@21cn.com
谢谢!

 回复 引用   
#50楼 2006-03-31 14:38 | 塞北的雪      
lygsbdx(a)163.com
谢谢

 回复 引用 查看   
#51楼 2006-03-31 15:38 | ATAG[未注册用户]
可以给我源码吗?电子邮件是:apride@gmail.com
 回复 引用   
#52楼 2006-03-31 18:30 | xuanxuan[未注册用户]
mingxuanlvu@163.com
谢谢

 回复 引用   
#53楼[楼主] 2006-04-01 21:50 | 秋雨飘飞      
以上源码已发
 回复 引用 查看   
#54楼 2006-04-02 14:28 | wukun52 -1[未注册用户]
wukun52@Gmail.com
麻烦给份源码学习学习:)

 回复 引用   
#55楼 2006-04-02 16:31 | poorboat[未注册用户]
poorboat@gmail.com
谢谢

 回复 引用   
#56楼 2006-04-05 14:32 | kaly[未注册用户]
可以给一份源码吗?
kaliking@163.com

 回复 引用   
#57楼 2006-04-06 17:58 | xie[未注册用户]
我的信箱xpj@postalcargo.com
 回复 引用   
#58楼[楼主] 2006-04-06 22:19 | 秋雨飘飞      
邮件已发
 回复 引用 查看   
#59楼 2006-04-11 03:59 | tttick[未注册用户]
tttick@163.com

谢谢

 回复 引用   
#60楼 2006-04-11 12:46 | Castalia[未注册用户]

最近也正接触hook的概念 全局的hook该是一种特例吧
能否发一份代码让我学习一下
castalia.qi@gmail.com
十分感谢

 回复 引用   
#61楼 2006-04-13 13:11 | wanghuakang1818@163.com[未注册用户]
wanghuakang1818@163.com
谢谢!!!

 回复 引用   
#62楼 2006-04-19 14:22 | ff_ff[未注册用户]
我也要一份,谢谢:
suncheng_hong@yahoo.com.cn

 回复 引用   
#63楼 2006-04-20 16:38 | KB8[未注册用户]
源码,学习下,谢谢
kobe0208#163.com

 回复 引用   
#64楼[楼主] 2006-04-21 15:14 | 秋雨飘飞      
开源,开源,我还是把源码传上来吧
 回复 引用 查看   
#65楼 2006-04-25 09:54 | 老虎爱吃鱼[未注册用户]
谢谢哦
兄弟

 回复 引用   
#66楼 2006-04-28 21:17 | joycode[未注册用户]
hHook = SetWindowsHookEx(WH_MOUSE部分应当改为以下所示,VS2005会提示用ManageThreadId,注意这个错误是误导,不用管,(我费了好大力气才找到,结果说是VS2005得错误,晕倒)
hHook = SetWindowsHookEx(WH_MOUSE,
MouseHookProcedure,
(IntPtr)0,
AppDomain.GetCurrentThreadId());

 回复 引用   
#67楼 2006-05-12 20:25 | 光辉岁月[未注册用户]
我也要一份
chouky@163.com

 回复 引用   
#68楼 2006-05-28 01:08 | Angus[未注册用户]
請問一下, 我想偵測某個程式中 TextBox 的 OnChange 事件
要用什麼Hook?...

對Hook不甚了解...

 回复 引用   
#69楼 2006-06-29 19:47 | coollzt@gmail.com[未注册用户]
谢了, 我想研究一下。 coollzt@gmail.com
 回复 引用   
#70楼 2006-07-30 23:14 | fishw[未注册用户]
麻烦! fishqq123@tom.com
 回复 引用   
#71楼 2006-08-24 11:26 | hellokitty[未注册用户]
编程爱好者,麻烦你了。
spidderman@163.com

 回复 引用   
#72楼 2006-08-24 11:27 | hellokitty[未注册用户]
求你了。。。

foxfreeway@yahoo.com.cn

 回复 引用   
#73楼 2006-08-24 15:34 | chg[未注册用户]
对你的程序非常有兴趣,想要份源码

chg@lzccb.com

thank

 回复 引用   
#74楼 2006-09-14 10:01 | p[未注册用户]
谢谢
pdacf@163.com

 回复 引用   
#75楼 2006-09-22 17:18 | yinxiong[未注册用户]
yinxiong@bipt.edu.cn

 回复 引用   
#76楼 2006-11-07 20:43 | 邪恶小D[未注册用户]
destinyqq@hotmail.com

谢谢

 回复 引用   
#77楼 2006-11-22 13:37 | 鬼仔[未注册用户]
呵呵,希望也能拿份源码

guizai#126.com

把# 换成 @

 回复 引用   
#78楼 2006-11-24 15:10 | thanks[匿名][未注册用户]
solar.black@gmail.com
谢了先~:)

 回复 引用   
#79楼 2006-11-29 11:56 | gvb[未注册用户]
给我发一份
li_guoju@126.com
谢谢

 回复 引用   
#80楼 2006-12-14 11:11 | hyt123123[未注册用户]
给我一份。谢谢!
hyt_123123@163.com

 回复 引用   
#81楼 2006-12-29 17:43 | xxj[未注册用户]
给我一份。谢谢!xux.163@163.com
 回复 引用   
#82楼 2007-01-04 15:41 | 开心[匿名][未注册用户]
兄弟,给一份来学习学习,谢谢!
luokaijin@126.com

 回复 引用   
#83楼 2007-01-13 22:07 | sky[匿名][未注册用户]
skylan@u-soft。com。cn
 回复 引用   
#84楼 2007-01-29 00:05 | hch[未注册用户]
给一份,谢拉!
centerhch@163.com

 回复 引用   
#85楼 2007-02-05 16:17 | kevin[未注册用户]
可以给一份源码吗?
hvq@163.com
谢拉

 回复 引用   
#86楼 2007-02-08 11:51 | eaves[未注册用户]
大侠,先谢谢拉.
qhao117@163.com

 回复 引用   
#87楼 2007-02-22 23:29 | aifoo[未注册用户]
我也要一份 能给我邮件吗 谢谢啦
 回复 引用   
#88楼 2007-03-27 02:38 | yeng[未注册用户]
yeng25@gmail.com
谢谢了

 回复 引用   
#89楼 2007-04-13 18:49 | 高纪党[未注册用户]
gaojidang@163.com
 回复 引用   
#90楼 2007-04-14 23:00 | 泯[未注册用户]
417017891@163.com
兄弟等待中啊。。。。。。。

 回复 引用   
#91楼 2007-04-14 23:01 | 泯[未注册用户]
虽然我不知道是第多少个找你要源代码的了,但不愿放弃一点点可能。这诱惑实在受不了。417017891@163.com
 回复 引用   
#92楼 2007-06-15 16:18 | coolpest[未注册用户]
想要您的这个代码!
 回复 引用   
#93楼 2007-07-08 21:35 | coffeefish617[未注册用户]
coffeefish617@163.com
挺有趣的,

 回复 引用   
#94楼 2007-07-11 14:52 | 张伦海[未注册用户]
非常想得到您的键盘钩子源代码。谢谢。
bz-pp@sohu.com

 回复 引用   
#95楼 2007-07-12 12:35 | Jarod[未注册用户]
的确很有意思,不知道你计算的长度是否准确,是通过像素点计算的吗?如果我的屏幕调的很奇特会不会影响呢:)呵呵,纯属刁难,加油,你的技术真不错哟,
 回复 引用   
#96楼 2007-09-29 15:44 | #100楼[未注册用户]
的确很有意思,不知道你计算的长度是否准确,是通过像素点计算的吗?
 回复 引用   
#97楼 2007-10-03 10:13 | Elec[未注册用户]
能提供原源码的话,也帮我一把吧,谢谢,不提供也没关系的。elecwave@126.com
 回复 引用   
#98楼 2008-10-25 19:59 | 舒培培[未注册用户]
我也想要份源代码,麻烦发份给我吧,研究下,嘿嘿!~``

 回复 引用   
#99楼 2010-04-24 19:34 | 烈火★寒冰      
收藏先。
 回复 引用 查看   
#100楼 2010-04-24 19:38 | 烈火★寒冰      
看来楼主对Hook很有研究。
想请教个问题:我想实现这样的效果,就是能在应用程序的界面发生变化时马上得知这个消息,比如说斗地主游戏里面一家出牌后马上截获到这个消息,只要准确得知它已经发生了就好。
当然,如果能够得到详细的信息那更好。

条件是:
(1)不固定是某个程序,对一般的程序都作用的方法。
(2)不使用屏幕截图比较技术,这个方法占用CPU资源太高,已经优化过程序了。双核2.8GHzCPU,如果每100MS截图一次,CPU占用在25%左右,较稳定。500MS的话在16%左右,这个频率的CPU占用率不太稳定,有时2%、6%等等。而且,即使是100MS/次的频率还是无法满足我的要求。

据说用Hook可以实现。最好能在.NET C# 里面实现。

 回复 引用 查看   
#101楼 2010-11-30 15:31 | cooseasy      
呵呵 挺不错的 下载研究研究
 回复 引用 查看   
评论共2页: 上一页 1 2 
MSN:: jhtjxj@hotmail.com

Locations of visitors to this page
昵称:秋雨飘飞
园龄:6年7个月
粉丝:0
关注:0
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 
 

常用链接

我的标签

随笔分类(109)

随笔档案(88)

文章分类(8)

文章档案(11)

相册

<marquee><font color=red><b>A-我的网络空间</b></font></marquee>

<marquee><font color=red><b>MSN Spaces of my friends </b></font></marquee>

<marquee><font color=red><B>常用网址</B></font></marquee>

<marquee><font color=red><B>论坛</B></font></marquee>

<marquee><font color=red><B>朋友们的BLOG</B></font></marquee>

<marquee><font color=red><B>我的收藏夹</B></font></marquee>

积分与排名

  • 积分 - 153951
  • 排名 - 602

最新评论

阅读排行榜

评论排行榜

推荐排行榜