OICQ已經成為現在這個網絡世界中最為時尚的聊天、即時通訊工具了!對於它,許多程序員都寫了些相關小工具,像一些OICQ聊天輔助工具、OICQ密碼獲取器、聊天記錄查看器等等,分別用作於不同的用途。
其時,我也對於QQ這個好東東比較癡迷,但在使用過程始終發現有些情況的出現是我所不願意看到的。比如說:在網吧上網,瘋狂QQ後,你的聊天記錄,你的QQ號碼全部留在了網吧的機器中。此時,你從網吧離開。又來一位聊QQ者,可能後來的這個人喜歡搞惡作劇,用一些小工具,把你的QQ號碼及密碼盜取,為已所用。或者看一些你的聊天記錄,探清你的隱私,這顯然不是你所希望的。可能,此時你會想 ,這沒有什麼,我只要把QQ號碼那個文件夾刪除就可以了。是的,這確實是一個好辦法,可是這還有一個問題解決不了,就是你的QQ仍會留在QQ登錄的對話框中,那麼你該怎麼辦?本文就是介紹如何實現清除登錄號碼!
我不知道細心的QQ用戶注意到沒有,在QQ主目錄下面有一個DAT文件夾,在此文件夾下有一個名為OICQ2000.cfg文件。該文件就是存有在本台機器上有多少個QQ號碼,每個號碼的長度值,每一個具體號碼!下面詳細介紹一下該文件並講解一下如何用程序實現清除!
以下示例是在作者機器上文件內容:(號碼為作者的QQ號文件內容以16進制值表示)
00 00 00 00 00 00 00 01 00 00 00 08 00 00 00 35 33 37 34 38 38 37 36
以上文件內容每兩個字位為一個字節。
前9個字節是這個機器上共有多少個QQ號,最大值為999999999個(不少吧)接著三個字節為00 00 00 這是分隔符。接著是一個字節數據08,表示當前QQ號碼的長度為幾位,為08表示為8位,接著又是分隔符,接著用這長度值字節數來存儲實際的QQ號碼的ASCII碼值!如果有多個,就接著在後面存儲分隔符(3字節)、QQ號碼長度(1字節)、分隔符(3字節)、實際號碼,以此類推…………。
示例代碼如下所示:
struct QQhead
{
unsigned char head[9];//總共有的QQ號碼數 9字節
unsigned char spea[3];//分隔符,3字節
}; //oicq2000.cfg文件頭結構
QQhead thishead;
//m_filename為要操作的文件名,就是oicq200.cfg,存儲的是QQ的完成路徑
ofile.Open(m_filename,CFile::modeRead,&fe);//打開oicq2000.cfg文件
ofile.Read (thishead.head,9);// 讀出文件頭,QQ號碼數
long i,sum=0;
int number;
for(i=0;i<8;i++)
{
number=thishead.head[i];
sum=sum+number*10^(7-i);
}//處理QQ號碼個數
number=thishead.head[8];
sum=sum+number;
CString str,stritem,leng;
unsigned char len[1];
char stritem1[99];
number=0;
ofile.Read (thishead.spea,3); // 讀出分隔符
for(i=0;i<sum;i++)
{
ofile.Read (len,1); //讀出該QQ號碼長度;
ofile.Read (thishead.spea,3); // 讀出分隔符
number=len[0];
ofile.Read (stritem1,number);
stritem1[number]='\0';
CListBox *plist;
plist=(CListBox *)GetDlgItem(IDC_LIST1);
str.Format ("%s",stritem1);
plist->AddString(str); //循環插入列表,並顯示出來
}
上面這段代碼的是從oicq2000.cfg文件中讀取出所有的QQ號碼並顯示listbox控件中的功能。相信讀者已經看明白了!
當然要實現我所做的軟件的功能,就是在listbox雙擊一條QQ號就將其從oicq2000.cfg中去除的功能,讀者參考上面的數據結構應該很快就能完成!
知道了以上原理,那我們就可以寫出如下代碼段來完成從文件中讀取和向文件中存入的程序!(示例代碼為本人所發布的軟件部分代碼。QQ登錄號碼清除器是作者本人寫的一個完全共享的QQ小工具,軟件下載地址為http://free.tsee.net/acehq/Hidenum.exe。也可以CSDN網站注冊軟件中找到,鏈接地址為http://www.csdn.net/cnshare/soft/10/10135.html!軟件實現環境為VC++6.0,WINDOWQS 2000 SERVER操作系統,賽揚667,30G硬盤,128M內存。