用VC制作个性化浏览器 在VC中MFC可以发现内存漏洞，这个特性如何使用呢? 随着计算机网络技术的飞速发展，互联网上的网站越来越多，它们在内容和形式上追求特色化和个性化，其中一些精美的网页令人赏心悦目，流连忘返。但是，目前绝大多数人使用的浏览工具却是界面单调、功能整齐划一的商用产品，在追求个性化的时代，这不能不说是一种遗憾。下面本文介绍一种利用VC++ 6.0制作个性化浏览器的方法。利用这种方法，不但可以制作出个性化的浏览器，同时还能根据需要加入比商业产品更多的安全措施。 功能特点 本文要制作的浏览器程序具有如下功能：
● 自动拨号功能；
● 具有前进、后退、停止、刷新、搜索等功能，还可以选用自己喜欢的工具图标，定制个性化界面；
● 自动网站网址记录备份功能；
● 隔离不良网站功能。
在微软IE浏览器中，安全属性选项的受限站点的内容很容易被更改，使安全性大打折扣。本文介绍的方法通过把所有能找到的不良站点放在一个数组中，经编译、链接后生成.EXE文件，他人不能更改，所以具有更高的安全性。这种方法特别适合有小孩的家庭上网、校园学生上网和社会上的网吧管理。
实现步骤
1．首先用VC++ 6.0的MFC AppWizard生成一个单文档程序，在第1步到第5步时保持缺省设置，在第6步时将Cview类改为CHtmlView类。
2．在集成编辑环境下，将Microsoft Web浏览器控件添加到程序中，这样就可以利用该控件的函数来完成浏览器的一些有用的功能，如页面浏览的前进、后退、搜索、停止等。由于这部分功能大多由控件直接完成，本文不再赘述。下面重点介绍如何添加安全措施。
3．在MFC ClassWizard中添加OnBefore Navigate2程序。下列代码用来阻止用户访问一些不良网站：
void CSina6View:: OnBeforeNavigate2 (LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName, CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel)
{
//不良网站的地址被列在CstringArray类的m_strBlockList 数组中
for(int i=0; i<m_strBlockList.GetSize(); i++) {
CString strTemp;
strTemp=m_strBlockList.GetAt(i);
//检查用户访问的网站地址lpszURL是否在被禁止的数组中
if(! strnicmp(lpszURL，strTemp，strTemp. GetLength()))
{ //如果用户访问被禁止的网站，则出现提示，并禁止用户浏览该网页
*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);
//检查请求访问的网站地址是否被列入数组中，或请求访问的网址的前几位是否与被限制的网址一样？如：HTTP：//WWW.XXX SEX.COM/XXMAN/作为是HTTP：//WWW. XXXSEX. COM/网站的下一层内容，也在被禁止之列，if(! strnicmp (lpszURL, strTemp, strTemp. GetLength())||! strnicmp(lpszURL. Left(strTemp. GetLength())), strTemp, StrTemp.GetLength())
{
*pbCancel=TRUE;
AfxMessageBox("此网站被禁止访问！");
break;
}
}
}
这样就能从根本上禁止用户访问已知的不良网站。如果在使用中发现了数组中还没有收集到的不良网站的网址，可以打开源程序把该不良网址添加到数组中。
4．因为不良网站是动态变化的，所以我们不能、也不可能把所有的不良网站都列入到禁止搜索数组中，并且经常把源程序改来改去也不方便。为此，我们可以采取事后备案的方法，即记录近期用户所浏览的网站地址，以备日后查找和核对，这样也可以对用户起到一定的阻止作用。
在MFC ClassWizard中添加OnNavigate-Comple te2程序：
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));
}

（朱云峰）