正在閱讀:QQ聊天記錄器演示程序(一)QQ聊天記錄器演示程序(一)

2004-06-04 10:29 出處:CSDN 作者:hottey 責(zé)任編輯:linjixiong

     注:本篇沒(méi)有高手需要的內(nèi)容,因?yàn)榇宋闹械募夹g(shù)實(shí)在無(wú)新意可言,只是些簡(jiǎn)單的實(shí)現(xiàn)(可針對(duì)QQ2003和QQ2004版本),各位高手可以就此打住,若浪費(fèi)寶貴時(shí)間,吾將深感不安。   作者網(wǎng)站:http://asp.itdrp.com/hottey

     噓!好不容易有了一點(diǎn)輕松點(diǎn)的時(shí)候.現(xiàn)在才有時(shí)間把前幾天做的QQ聊天記錄器發(fā)上來(lái)和大家一起分享.做這個(gè)程序是看到最近網(wǎng)上有一個(gè)叫QQAutoReorder的軟件.它所實(shí)現(xiàn)的功能就是對(duì)QQ聊天記錄進(jìn)行記錄.所采用的技術(shù)是:對(duì)QQ對(duì)話(huà)框進(jìn)行掛鉤.它并不能對(duì)用戶(hù)沒(méi)有點(diǎn)擊的QQ消息進(jìn)行記錄.(我認(rèn)為若想對(duì)QQ消息進(jìn)行實(shí)時(shí)記錄,意思就是不等QQ消息框出來(lái)就記錄下QQ的消息.可能只能去攔截QQ的數(shù)據(jù)封包了吧.我也花了一天時(shí)間在這上面,但最后的結(jié)論是’太自不量力了’^_^看來(lái)QQ的數(shù)據(jù)封包可不是那么容易就能得到的L)

   言歸正傳:本文采用對(duì)QQ消息框進(jìn)行掛鉤了方法(一來(lái)比較容易實(shí)現(xiàn),二來(lái)也是大多數(shù)此類(lèi)程序通用的方法.)為了簡(jiǎn)化程序:我將此程序分為兩部實(shí)現(xiàn)(均于QQ2004下實(shí)現(xiàn),到最后在兼容QQ2003的版本):

  一.   捕獲別人給自己發(fā)來(lái)的消息:

  既然是掛鉤QQ的消息框,自然得從眾多的鉤子類(lèi)型中找出一種最為合理,也最方便的.很容易想到的是無(wú)論你用什么方式查看QQ的消息.總會(huì)導(dǎo)致一個(gè)QQ消息窗體的生成.就是會(huì)產(chǎn)生一個(gè)CREATE事件.從這一點(diǎn)上看,用一個(gè)WH_SHELL鉤子是比較明智的.

  幫助上對(duì)WH_SHELL的說(shuō)明是:監(jiān)控Windows外殼通知消息,例如頂級(jí)窗口的創(chuàng)建的釋放.我們這里要關(guān)心是窗口的創(chuàng)建消息.

  由于有可能一次出現(xiàn)多個(gè)QQ消息窗口的情況,我在這里使用全局鉤子:并定義以下數(shù)據(jù)結(jié)構(gòu):


HookType.Pas單元

unit HookType;

interface

uses

  Windows, Messages;
const

  WM_USERCMD   = WM_APP + 1;  //用戶(hù)自定應(yīng)用程序級(jí)消息

  UC_WINCREATE  = WM_APP + 2;   //QQ消息窗口創(chuàng)建

  UC_WINDESTROY = WM_APP + 3;  //發(fā)送QQ消息

  BUFFER_SIZE  = 16 * 1024;

  HOOK_MEM_FILENAME = 'MEM_FILE';

type

  TShared = record

 

 





察看評(píng)論詳細(xì)內(nèi)容 我要發(fā)表評(píng)論
作者筆名簡(jiǎn)短內(nèi)容 發(fā)表時(shí)間
:

鍵盤(pán)也能翻頁(yè),試試“← →”鍵
302 Found

302 Found


Powered by Tengine
tengine