版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C+實驗報告基于IE的WEB瀏覽器姓名:*學號:*班級: *2012/12/13目錄一、實驗目的3二、實驗設備(環(huán)境)及要求3三、實驗設計3四、軟件的具體實現(xiàn)過程5(一)實現(xiàn)WEB站點瀏覽,初步完成瀏覽器的模塊的建立以及實現(xiàn)工具欄的各個功能(如:前進.后退,刷新,主頁,停止以及搜索等功能)。51.利用MFC AppWizard生成應用程序框架52.修改菜單63.修改工具欄64.為控件添加時間處理函數(shù)75.添加事件處理函數(shù)的代碼76.為應用程序添加URL定位功能87.解決單擊超級鏈接時地址欄的同步問題108.修改首頁地址,以及主頁地址和搜索頁面。11(二)加入刪除IE相關歷史記錄的功能(包括刪除
2、文檔歷史紀錄,清除cookies,清除Internet臨時文件,清除地址欄中的歷史任務,清除密碼歷史紀錄和清除收藏夾)。111.添加“刪除”菜單112.為控件添加事件處理函數(shù)123.添加事件處理函數(shù)的代碼13(8) 實現(xiàn)桌面快捷方式22(三)顯示瀏覽器當前訪問站點的標題(附加功能)24五、實驗結果與數(shù)據(jù)處理24起始頁:24“創(chuàng)建桌面快捷方式“功能27六、缺陷27七、總結28一、實驗目的目的: 通過一個學期的學習,編寫一個項目型的功能軟件,綜合應用專業(yè)所學習的多門課程知識,并把本學期所學的編程知識運用到實際編程中,熟練編程規(guī)范,訓練編程思維,為學生適應合作開發(fā)規(guī)模稍大項目打下基礎。二、實驗設備(
3、環(huán)境)及要求1) 使用VC+平臺實現(xiàn)該程序2) 要求用戶操作時,要給出清晰,明確的提示信息。3) 所有文件、函數(shù)、變量的名稱應盡量做到“見其名知其意”。三、實驗設計文本文檔記錄瀏覽過所有網(wǎng)頁的網(wǎng)址清除IE的臨時文件清除COOKie刪除文檔歷史記錄瀏覽器普通瀏覽器功能特殊瀏覽器功能搜索功能刪除功能清除地址欄中歷史地址前進后退主頁搜索刷新由于技術原因本軟件直接調(diào)用IE內(nèi)核,該軟件的具體功能如上圖,除了具有普通瀏覽器的功能外又加了個特殊的功能“文本文檔記錄瀏覽過所有網(wǎng)頁的地址”隨著上網(wǎng)的瀏覽網(wǎng)頁是項目過多,有時候需要記錄網(wǎng)頁,但是瀏覽記錄大多又太復雜,上面的項目太多,而且大多都不是自己需要的,為了解
4、決這個問題,本軟件專門設置了個記錄所有瀏覽過網(wǎng)頁地址的文本文檔,這個很實用但又很簡單的功能。四、軟件的具體實現(xiàn)過程(一)實現(xiàn)WEB站點瀏覽,初步完成瀏覽器的模塊的建立以及實現(xiàn)工具欄的各個功能(如:前進.后退,刷新,主頁,停止以及搜索等功能)。1.利用MFC AppWizard生成應用程序框架工程名為myWeb16。第一步,選擇工程類型為單文檔(SDI),中文語言支持。第二步和第三步使用默認值,不需要數(shù)據(jù)庫,也不提供對于復合對象的支持;第四步選擇Internet Explorer ReBars工具欄的風格,這樣就有了用來輸入網(wǎng)址的文本框;第五步不做任何修改;第六步選擇CHtmlView類作為視圖
5、類的基類。生成工程框架包含4個類。1. 應用程序類:CMyWeb16App,對應myWeb16.h和myWeb16.cpp文件。2. 框架類:CMainFrame,對應MainFrm.h和MainFrm.cpp文件。3. 文檔類:CMyWeb16Doc,對應myWeb16Doc.h和myWeb16Doc.cpp文件。4. HtmlView類:CMyWeb16View,對應myWeb16View.h和myWeb16View.cpp文件。此時編譯運行,程序已經(jīng)具有基本的Web瀏覽功能,能自動鏈接到微軟公司的網(wǎng)站。2.修改菜單在工作區(qū)中選擇“ResourceView”選項卡,選擇Menu,雙擊菜單控
6、件的名字(IDR_MAINFRAME),右邊出現(xiàn)程序的菜單。選擇菜單中的“查看”命令,已經(jīng)有了“工具欄”和“狀態(tài)欄”兩個條目,雙擊下面的空框,彈出設置菜單條目屬性對話框,如圖1.1所示,按照表1.2添加6個菜單條目菜單條目名稱(Caption)ID號前進ID_FOWARD后退ID_BACK停止ID_STOP刷新ID_UPDATE主頁ID_HOMEPAGE搜索ID_SEARCH圖1.23.修改工具欄在工具欄上增加新的按鈕,以便快速執(zhí)行所需的功能。在工作區(qū)中選擇“ReaourcecView”選項卡,選擇ToolBar,雙擊工具條控件的名字(IDR_MAINFRAME),右邊出現(xiàn)程序的工具條。雙擊其
7、中的安秀,可以看到他們的屬性。其中有一個空的按鈕,雙擊它可以添加新的安秀的屬性,如圖1.3所示,利用右邊的圖形繪制工具,可以自己設計新的按鈕圖樣。如圖1.4所示。如圖添加6個按鈕,他們的ID號與相應的菜單條目相同。拖動按鈕,可以改變按鈕之間的相對位置。4.為控件添加時間處理函數(shù)當用戶單擊菜單條目,或者單擊相應的快捷鍵時,應能引起程序的反映,這就需要給這些控件添加時間處理函數(shù)。進入類向?qū)?,選擇“Message Maps”選項卡。在“Class Name”下拉列表框中選擇CMyWeb16View類,然后按照表1.5為前述的六個控件添加事件處理函數(shù)。對象IDMessagesMember Functi
8、onID_FORWARDCOMMANDOnFoward()ID_BACKCOMMANDOnBack()ID_STOPCOMMANDOnStop()ID_UPDATECOMMANDOnUpdate()ID_HOMEPAGECOMMANDOnHomepage()ID_SEARCHCOMMANDOnSearch()圖1.55.添加事件處理函數(shù)的代碼在MyWeb16View.cpp實現(xiàn)文件中,添加上述6個時間處理函數(shù)的代碼。/前進到下一個網(wǎng)頁void CMyWeb16View:OnFoward() GoForward();/退到下一個網(wǎng)頁void CMyWeb16View:OnBack() GoBac
9、k();/停止網(wǎng)頁的下載void CMyWeb16View:OnStop() Stop();/刷新當前的網(wǎng)頁void CMyWeb16View:OnUpdate() Refresh();/回到主頁void CMyWeb16View:OnHomepage() GoHome();/進行搜索void CMyWeb16View:OnSearch() GoSearch();此時可以再進行編譯運行。6.為應用程序添加URL定位功能(1)添加網(wǎng)址輸入欄控件。在工作區(qū)中選擇“Resource View”選項卡,選擇Dialog,雙擊對話框控件的名字(IDR_MAINFRAME),右邊出現(xiàn)對話框條。在上面添加一
10、個“地址”的靜態(tài)文本,再添加一個文本編輯框控件,ID號時IDC_ADDR,作為地址欄,提供給用戶輸入要瀏覽的網(wǎng)站地址。如圖1.6所示。(2)添加控制代碼。當用戶輸入網(wǎng)址后按回車時,就有一個IDOK的消息發(fā)送到主框架類,添加處理這個消息的控制函數(shù),在該函數(shù)中,用指定的網(wǎng)址調(diào)用Navigate()和Navigate2()函數(shù) ,就可以實現(xiàn)對該網(wǎng)頁的瀏覽。在MainFrm.h文件中,添加消息處理函數(shù)的聲明。public:void OnNew();在MainFrm.cpp文件中,添加該函數(shù)的實現(xiàn)代碼。void CMainFrame:OnNew()CString pp; /獲得用戶在地址欄中輸入的URL
11、m_wndDlgBar.GetDlgItem(IDC_ADDR)->GetWindowText(pp); /瀏覽指定的網(wǎng)頁(CMyWeb16View*)GetActiveView()->Navigate(pp);*建立事件處理函數(shù)與消息的映射在MainFrm.cpp的文件中,在消息映射(MESSAGE_MAP)段中添加自己的消息映射宏。用ON_COMMAND命令建立IDOK消息和處理函數(shù)OnNew的映射關系。BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)/AFX_MSG_MAP(CMainFrame)ON_WM_CREATE()/AFX_MSG_M
12、APON_COMMAND(IDOK,OnNew) /自己的消息映射宏END_MESSAGE_MAP()在myWeb16View.h文件的類定義前面添加包含語句#include"myWeb16Doc.h"7.解決單擊超級鏈接時地址欄的同步問題利用CHtmlView類的事件處理函數(shù),當網(wǎng)頁下載完成,會觸發(fā)OnDocumentComplete()函數(shù),該函數(shù)的參數(shù)就是所下載網(wǎng)頁的URL,可以利用此函數(shù)對地址欄進行設置,添加以下代碼。 在MainFrm.h文件中,添加處理函數(shù)的聲明。public:void SetPage(LPCTSTR lpazURL);在MainFrm.cpp文
13、件中,添加該函數(shù)的實現(xiàn)代碼。void CMainFrame:SetPage(LPCTSTR lpszURL)m_wndDlgBar.GetDlgItem(IDC_ADDR)->SetWindowText(lpszURL);使用類向?qū)砑邮录幚砗瘮?shù)。用類向?qū)閼贸绦虻腃MyWeb16View類添加OnDocumentComplete()事件處理函數(shù),并在myWeb16View.cpp文件中添加它的實現(xiàn)代碼。void CMyWeb16View:OnDocumentComplete(LPCTSTR lpszURL) (CMainFrame*)GetParentFrame()->Set
14、Page(lpszURL);添加包含語句。在MainFrm.cpp文件前面添加包含語句。 #include"myWeb16View.h"在myWeb16View.cpp文件前面添加包含語句。 #include"MainFrm.h"8.修改首頁地址,以及主頁地址和搜索頁面。在myWeb16View.cpp的文件中,找到OnInitialUpdate()函數(shù),修改首頁地址。Navigate2(_T(""),NULL,NULL);在開始菜單的運行中輸入regedit,回車。在目錄菜單下:HKEY_CURRENT_USER/Software/
15、Microsoft/Internet Explorer/Main找到Start Page(主頁)和Search Page(搜索頁),并修改其數(shù)值數(shù)據(jù)。Start Page(主頁): Search Page(搜索頁):.hk(二)加入刪除IE相關歷史記錄的功能(包括刪除文檔歷史紀錄,清除cookies,清除Internet臨時文件,清除地址欄中的歷史任務,清除密碼歷史紀錄和清除收藏夾)。1.添加“刪除”菜單(1)修改菜單,在工作區(qū)中選擇“ResourceView”選項卡,選擇Menu,雙擊菜單控件的名字(IDR_MAINFRAME),右邊出現(xiàn)程序的菜單。在菜單中加入“刪除”欄,分別添加“刪除文檔
16、歷史記錄”、“清除Cookies”、“清除Internet臨時文件”、“清除地址欄中的歷史地址”、“清除密碼歷史記錄”和“清除收藏夾”6個菜單條目及其屬性。如圖2.1、2.2、2.3示。菜單條目名稱(Caption)ID號刪除文檔歷史記錄ID_DelHistory清除CookieID_DelCookies清除Internet臨時文件ID_DelIntenetTempFile清除地址欄中歷史地址ID_DelHistoryAddress清除密碼歷史記錄ID_DelHistoryPassword圖2.22.為控件添加事件處理函數(shù)進入類向?qū)?,選擇“Message Maps”選項卡。在“Class Na
17、me”下拉列表框中選擇CMyWeb16View類,然后按照表2.4為上述刪除的六個控件添加事件處理函數(shù)。對象IDMessagesMember FunctionID_DelHistoryCOMMANDOnDelHistory() ID_DelCookiesCOMMANDOnDelCookies()ID_DelIntenetTempFileCOMMANDOnDelIntenetTempFile()ID_DelHistoryAddressCOMMANDOnDelHistoryAddress() ID_DelHistoryPasswordCOMMANDOnDelHistoryPassword()圖2.
18、43.添加事件處理函數(shù)的代碼在myWeb16View.cpp中,添加如下代碼。(1)實現(xiàn)文檔歷史記錄的清除void CMyWeb16View:OnDelHistory() /清除文檔歷史記錄TCHAR szPathMAX_PATH;if(SHGetSpecialFolderPath(NULL,szPath,CSIDL_RECENT,FALSE)EmptyDirectory(szPath);SHDeleteKey(HKEY_CURRENT_USER,_T("SoftwareMicrosoftCurrentVersionExplorerRecentDocs");(2)清除Coo
19、kievoid CMyWeb16View:OnDelCookies() /清除CookiesTCHAR szPathMAX_PATH;DeleteUrlCache(Cookie); /刪除URL的Cacheif (SHGetSpecialFolderPath(NULL,szPath,CSIDL_COOKIES,FALSE)EmptyDirectory(szPath);(3) 清除Internet的臨時文件void CMyWeb16View:OnDelIntenetTempFile() /清空Internet臨時文件TCHAR szPathMAX_PATH;DeleteUrlCache(File
20、); /刪除URL的Cacheif (SHGetSpecialFolderPath(NULL,szPath,CSIDL_INTERNET_CACHE,FALSE) /得到臨時目錄并清空它EmptyDirectory(szPath);(4)清除地址欄中的歷史任務void CMyWeb16View:OnDelHistoryAddress() /瀏覽器地址欄歷史記錄的清除SHDeleteKey(HKEY_CURRENT_USER,_T("SoftwareMicrosoftInternet ExplorerTypedURLs");(5)清除密碼歷史紀錄void CMyWeb16Vi
21、ew:OnDelHistoryPassword() /清除密碼歷史記錄SHDeleteKey(HKEY_CURRENT_USER,_T("SoftwareMicrosoftInternet ExplorerIntelliForms");(6)實現(xiàn)目錄的刪除在OnDelIntenetTempFile、OnDelCookies和OnDelHistory這三個函數(shù)中都用到了函數(shù)EmptyDirectory()。刪除目錄是一個基本操作,因為有些歷史記錄是以文件形式保存在某個特定目錄下的而且目錄下還可能有子目錄,所以可以采用遞歸方法刪除整個目錄。EmptyDirectory函數(shù)負責清
22、空整個目錄。在myWeb16View.cpp文件的類定義前面添加包含語句。#include "shlwapi.h"在StdAfc.h文件的類定義前面添加包含語句。#include "atlbase.h"在myWeb16View.h的文件中,添加處理函數(shù)的聲明。public:BOOL EmptyDirectory(LPCTSTR szPath, BOOL bDeleteDesktopIni = FALSE, BOOL bWipeIndexDat = FALSE);/清空一個目錄在myWeb16View.cpp的文件中,添加該函數(shù)的實現(xiàn)代碼。BOOL CMy
23、Web16View:EmptyDirectory(LPCTSTR szPath,BOOL bDeleteDesktopIni,BOOL bWipeIndexDat)WIN32_FIND_DATA wfd;HANDLE hFind; /文件句柄CString sFullPath;CString sFindFilter;DWORD dwAttributes = 0;sFindFilter = szPath; /路徑名sFindFilter +=_T("*.*"); /表示所有文件都要刪除 /找到第一個文件if(hFind=FindFirstFile(sFindFilter,&a
24、mp;wfd)=INVALID_HANDLE_VALUE)return FALSE;doif(_tcscmp(wfd.cFileName,_T(".")=0|_tcscmp(wfd.cFileName,_T(".")=0|(bDeleteDesktopIni=FALSE&&_tcscmp(wfd.cFileName,_T("desktop.ini")=0)continue;sFullPath=szPath;sFullPath+=_T('');sFullPath+=wfd.cFileName; /文件完整
25、的路徑和名稱/如果文件含有只讀屬性,那么應該去掉該屬性再刪除dwAttributes=GetFileAttributes(sFullPath); /得到文件屬性if (dwAttributes&FILE_ATTRIBUTE_READONLY) /判斷是否只讀dwAttributes&=FILE_ATTRIBUTE_READONLY; /刪除只讀屬性SetFileAttributes(sFullPath,dwAttributes); /重新刪除/判斷該文件是否是一個目錄,如果是目錄則遞歸調(diào)用清空子目錄if (wfd.dwFileAttributes&FILE_ATTRIB
26、UTE_DIRECTORY)EmptyDirectory(sFullPath,bDeleteDesktopIni,bWipeIndexDat);RemoveDirectory(sFullPath); else /這是一個文件DeleteFile(sFullPath); /刪除該文件while(FindNextFile(hFind,&wfd); /查找下一個文件FindClose(hFind); /關閉文件句柄return TRUE;(7)關于Cache在OnDelCookies函數(shù)和OnDelIntenetTempFile()函數(shù)中都用到了函數(shù)DeleteUrlCache()。在實際的
27、網(wǎng)絡中,任何從網(wǎng)絡上流入的數(shù)據(jù)都會在本地的硬盤上緩存起來,Cookies和Internet臨時文件也不例外,所以還需要清除他們的Cache,而不僅僅是文件本身。 在myWeb16View.h文件的類定義前面添加包含語句#include "wininet.h" #include "UrlHist.h" #define SWEEP_BUFFER_SIZE 10000 在myWeb16View.h中添加如下枚舉類型,以及處理函數(shù)的聲明。public:enum DEL_CACHE_TYPEFile, /表示Internet臨時文件Cookie /表示Cookie
28、;BOOL DeleteUrlCache(DEL_CACHE_TYPE type); 在myWeb16View.cpp的文件中添加如下代碼。BOOL CMyWeb16View:DeleteUrlCache(DEL_CACHE_TYPE type)BOOL bRet=FALSE;HANDLE hEntry;LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry=NULL; /Cache入口指針DWORD dwEntrySize;dwEntrySize=0;hEntry=FindFirstUrlCacheEntry(NULL,NULL,&dwEntrySize);
29、 /找到第一個URL Cache入口lpCacheEntry=(LPINTERNET_CACHE_ENTRY_INFO) new chardwEntrySize;/分配空間hEntry=FindFirstUrlCacheEntry(NULL,lpCacheEntry,&dwEntrySize);if (!hEntry)goto cleanup;do if (type=File&&!(lpCacheEntry->CacheEntryType&COOKIE_CACHE_ENTRY)DeleteUrlCacheEntry(lpCacheEntry->lps
30、zSourceUrlName); else if(type=Cookie&&(lpCacheEntry->CacheEntryType&COOKIE_CACHE_ENTRY)DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName);dwEntrySize=0;FindNextUrlCacheEntry(hEntry,NULL,&dwEntrySize);delete lpCacheEntry;lpCacheEntry=(LPINTERNET_CACHE_ENTRY_INFO) new chardwEnt
31、rySize; while (FindNextUrlCacheEntry(hEntry,lpCacheEntry,&dwEntrySize);bRet=TRUE;cleanup:if (lpCacheEntry)delete lpCacheEntry;return bRet;缺少2個連接加上#pragma comment(lib,"wininet.lib")#pragma comment(lib,"Shlwapi.lib")(8) 實現(xiàn)桌面快捷方式 添加按鈕“創(chuàng)建快捷方式”修改對話框控件(IDR_MAINFRAME),添加按鈕“創(chuàng)建快捷方式”與編
32、輯框,如下圖所示。對話框條目名稱(Caption)ID號創(chuàng)建快捷方式IDC_SHORTCUT編輯框IDC_shortcutname對象IDMessagesMember Function IDC_SHORTCUTCOMMAND OnShortcut()添加代碼如下:void CMainFrame:OnShortcut() CString pp; /獲得用戶在地址欄中輸入的URLm_wndDlgBar.GetDlgItem(IDC_ADDR)->GetWindowText(pp);CString pp1; /獲得用戶在地址欄中輸入的URLm_wndDlgBar.GetDlgItem(IDC_
33、shortcutname)->GetWindowText(pp1);IShellLink *MyLink;/IShellLink 接口指針I(yè)PersistFile *ppf; /另一個接口指針char DesktopLocateMAX_PATH;/存儲快捷方式在桌面保存的位置/桌面的位置SHGetSpecialFolderPath(NULL,DesktopLocate,CSIDL_DESKTOP,0);/以下設定快捷方式在桌面保存位置 0代表的是桌面strcat(DesktopLocate,"");strcat(DesktopLocate,pp1);strcat(DesktopLocate,".LNK");CoInitialize(NULL);/初始化COMint re=CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_ALL, IID_IShellLink,(void *)&MyLink);if(re<0) AfxMessageBox("創(chuàng)建COM對象失敗!");return;MyLink->SetPath(pp);/設置快捷方式實際文件位置MyLink->SetDescr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡安全防護方案設計與實施合同
- 2025年桂林年貨運資格證考試題
- 2025年南昌貨運從業(yè)資格證科目一考試答案
- 2025年河北貨運從業(yè)資格證模擬考試0題b2b
- 2025年烏海貨運從業(yè)資格證考試試題及答案
- 2025年新鄉(xiāng)道路運輸從業(yè)人員資格考試內(nèi)容有哪些
- 勇往直前青春無畏
- 綠色物流智能化配送運營模式探討
- 軟件維護與技術支持協(xié)議
- 農(nóng)業(yè)種植行業(yè)農(nóng)藥使用安全協(xié)議
- 2024年06月上海廣發(fā)銀行上海分行社會招考(622)筆試歷年參考題庫附帶答案詳解
- TSG 51-2023 起重機械安全技術規(guī)程 含2024年第1號修改單
- 計算機科學導論
- 《正態(tài)分布理論及其應用研究》4200字(論文)
- GB/T 45086.1-2024車載定位系統(tǒng)技術要求及試驗方法第1部分:衛(wèi)星定位
- 浙江省杭州市錢塘區(qū)2023-2024學年四年級上學期英語期末試卷
- 《工程勘察設計收費標準》(2002年修訂本)
- 1古詩文理解性默寫(教師卷)
- 廣東省廣州市越秀區(qū)2021-2022學年九年級上學期期末道德與法治試題(含答案)
- 2024年一級消防工程師《消防安全技術綜合能力》考試真題及答案解析
- 2024-2025學年六上科學期末綜合檢測卷(含答案)
評論
0/150
提交評論