注:本篇没有高手需要的内容,因为此文中的技术实在无新意可言,只是些简单的实现(可针对qq2003和qq2004版本),各位高手可以就此打住,若浪费宝贵时间,吾将深感不安。 作者网站:http://asp.itdrp.com/hottey
嘘!好不容易有了一点轻松点的时候.现在才有时间把前几天做的qq聊天记录器发上来和大家一起分享.做这个程序是看到最近网上有一个叫qqautoreorder的软件.它所实现的功能就是对qq聊天记录进行记录.所采用的技术是:对qq对话框进行挂钩.它并不能对用户没有点击的qq消息进行记录.(我认为若想对qq消息进行实时记录,意思就是不等qq消息框出来就记录下qq的消息.可能只能去拦截qq的数据封包了吧.我也花了一天时间在这上面,但最后的结论是’太自不量力了’^_^看来qq的数据封包可不是那么容易就能得到的l)
言归正传:本文采用对qq消息框进行挂钩了方法(一来比较容易实现,二来也是大多数此类程序通用的方法.)为了简化程序:我将此程序分为两部实现(均于qq2004下实现,到最后在兼容qq2003的版本):
一. 捕获别人给自己发来的消息:
既然是挂钩qq的消息框,自然得从众多的钩子类型中找出一种最为合理,也最方便的.很容易想到的是无论你用什么方式查看qq的消息.总会导致一个qq消息窗体的生成.就是会产生一个create事件.从这一点上看,用一个wh_shell钩子是比较明智的.
帮助上对wh_shell的说明是:监控windows外壳通知消息,例如顶级窗口的创建的释放.我们这里要关心是窗口的创建消息.
由于有可能一次出现多个qq消息窗口的情况,我在这里使用全局钩子:并定义以下数据结构:
hooktype.pas单元 unit hooktype; interface uses windows, messages; wm_usercmd = wm_app + 1; //用户自定应用程序级消息 uc_wincreate = wm_app + 2; //qq消息窗口创建 uc_windestroy = wm_app + 3; //发送qq消息 buffer_size = 16 * 1024; hook_mem_filename = 'mem_file'; type tshared = record
|
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器