明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用VC制作個性化瀏覽器

[摘要]作者: 曹朝暉隨著計算機網絡技術的飛速發(fā)展,互聯(lián)網上的網站越來越多,它們在內容和形式上追求特色化和個性化,其中一些精美的網頁令人賞心悅目,流連忘返。但是,目前絕大多數(shù)人使用的瀏覽工具卻是界面單調、功...
作者: 曹朝暉

隨著計算機網絡技術的飛速發(fā)展,互聯(lián)網上的網站越來越多,它們在內容和形式上追求特色化和個性化,其中一些精美的網頁令人賞心悅目,流連忘返。但是,目前絕大多數(shù)人使用的瀏覽工具卻是界面單調、功能整齊劃一的商用產品,在追求個性化的時代,這不能不說是一種遺憾。下面本文介紹一種利用VC ++ 6.0制作個性化瀏覽器的方法。利用這種方法,不但可以制作出個性化的瀏覽器,同時還能根據(jù)需要加入比商業(yè)產品更多的安全措施。

功能特點

本文要制作的瀏覽器程序具有如下功能:

● 自動播號功能;

● 具有前進、后退、停止、刷新、搜索等功能,還可以選用自己喜歡的工具圖標,定制個性化界面;

● 自動網站網址記錄備份功能;

● 隔離不良網站功能。

在微軟IE瀏覽器中,安全屬性選項的受限站點的內容很容易被更改,使安全性大打折扣。本文介紹的方法通過把所有能找到的不良站點放在一個數(shù)組中,經編譯、鏈接后生成.EXE文件,他人不能更改,所以具有更高的安全性。這種方法特別適合有小孩的家庭上網、校園學生上網和社會上的網吧管理。

實現(xiàn)步驟

1. 首先用VC ++ 6.0的MFC AppWizard生成一個單文檔程序,在第1步到第5步時保持缺省設置,在第6步時將Cview類改為CHtmlView類。

2. 在集成編輯環(huán)境下,將Microsoft Web瀏覽器控件添加到程序中,這樣就可以利用該控件的函數(shù)來完成瀏覽器的一些有用的功能,如頁面瀏覽的前進、后退、搜索、停止等。由于這部分功能大多由控件直接完成,本文不再贅述。下面重點介紹如何添加安全措施。

3. 在MFC ClassWizard中添加OnBeforeNavigate2程序。下列代碼用來阻止用戶訪問一些不良網站:

void CSina6View:: OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName, CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel)

{

 //不良網站的地址被列在CstringArray類的m_strBlockList 數(shù)組中

 for(int i=0; i<m_strBlockList.GetSize(); i++) {

CString strTemp;

strTemp=m_strBlockList.GetAt(i);

//檢查用戶訪問的網站地址lpszURL是否在被禁止的數(shù)組中

if(! strnicmp(lpszURL,strTemp,strTemp. GetLength()))

{

//如果用戶訪問被禁止的網站,則出現(xiàn)提示,并禁止用戶瀏覽該網頁

*pbCancel=TRUE;

AfxMessageBox(“此網站被禁止訪問!”);

break;

}

}

}

上述代碼可以禁止訪問不良網站的主頁地址,如HTTP://WWW. XXXSEX.COM/等。但對于直接在鏈接對話框中輸入不良網站深層內容地址時,該程序就無能為力,如直接輸入內容地址HTTP://WWW. XXXSEX.COM/MANXX/。為嚴格這種限制,程序必須能阻止訪問被限制網站的所有內容。為此,需要對上述代碼進行如下修改:

void CSina6View:: OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName, CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel)

{

for(int i=0; i<m_strBlockList.GetSize(); i++) {

CString strTemp;

strTemp=m_strBlockList.GetAt(i);

//檢查請求訪問的網站地址是否被列入數(shù)組中,或請求訪問的網址的前幾位是否與被限制的網址一樣?如:HTTP://WWW.XXXSEX.COM/XXMAN/作為是HTTP://WWW. XXXSEX.COM/網站的下一層內容,也在被禁止之列

if(! strnicmp(lpszURL, strTemp, strTemp. GetLength()) ! strnicmp(lpszURL. Left(strTemp. GetLength())), strTemp, StrTemp.GetLength())

{

*pbCancel=TRUE;

AfxMessageBox(“此網站被禁止訪問!”);

break;

}

}

}

這樣就能從根本上禁止用戶訪問已知的不良網站。如果在使用中發(fā)現(xiàn)了數(shù)組中還沒有收集到的不良網站的網址,可以打開源程序把該不良網址添加到數(shù)組中。

4. 因為不良網站是動態(tài)變化的,所以我們不能、也不可能把所有的不良網站都列入到禁止搜索數(shù)組中,并且經常把源程序改來改去也不方便。為此,我們可以采取事后備案的方法,即記錄近期用戶所瀏覽的網站地址,以備日后查找和核對,這樣也可以對用戶起到一定的阻止作用。

在MFC ClassWizard中添加OnNavigate-

Complete2程序:

Void CSina6View::OnNavigateComplete2(LPCTSTR strURL)

{

CFile storeURL;

//打開備份文件

if(!storeURL.Open(“URLHist.dat”,CFile::modeREAD CFile:: modeWrite))

{

if(! storeURL. Open(“URLHist.dat”, CFile::modeCreate CFile:: modeWrite))

  return;

}

//找到文件結尾處

storeURL. SeekToEnd();

//寫文件

storeURL.Write(strURL, strlen(strURL));