C#多標(biāo)簽瀏覽器功能的擴(kuò)展
假設(shè)NewTab(string url)是前面已經(jīng)完成的在新標(biāo)簽中打開鏈接的函數(shù)。
C#多標(biāo)簽瀏覽器實(shí)現(xiàn)打開主頁(yè):
這就要訪問注冊(cè)表,獲取ie首頁(yè)。
- string homepage="";
 - try {
 - homepage =(string)Registry.GetValue(
 - "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Internet Explorer\\Main",
 - "Start Page", "");
 - }
 - catch (Exception) {}
 - NewTab(homepage);
 
使用try-catch是為了防止讀取注冊(cè)表失敗,拋出異常。
C#多標(biāo)簽瀏覽器實(shí)現(xiàn)“粘貼并打開”:
其實(shí)就是要獲取剪貼板中的文本。
- NewTab(Clipboard.GetText());
 
恢復(fù)關(guān)閉的網(wǎng)頁(yè):
這就需要在前面所說的關(guān)閉標(biāo)簽操作的同時(shí),把即將關(guān)閉的標(biāo)簽的url記錄起來。可以用WebBrowser.Url.AbsoluteUri來獲取這個(gè)url。假設(shè)這些關(guān)閉過的url儲(chǔ)存在一個(gè)名為closed的字符串?dāng)?shù)組中。
然后就是要在用戶點(diǎn)擊撤銷按鈕的時(shí)候彈出這個(gè)url列表:
- ContextMenuStrip menu=new ContextMenuStrip();
 - for (int i=0; i< closed.Count; i++)
 - menu.Items.Add(closed[i]);
 - menu.ItemClicked+=(o1,e1)=>NewTab(e1.ClickedItem.Text);
 - menu.Show((Control)sender, e.Location);
 
(o1,e1)=>NewTab(e1.ClickedItem.Text)是lambda表達(dá)式,代表一個(gè)函數(shù),當(dāng)menu被點(diǎn)擊的時(shí)候,就會(huì)調(diào)用這個(gè)函數(shù)。
讀取打開ie收藏
首先獲取ie收藏夾所在路徑:
- string path=(string)Registry.GetValue(
 - "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
 - "Favorites", "");
 
然后獲取路徑所表示的文件夾對(duì)象:
- DirectoryInfo dir=new DirectoryInfo(path);
 
用dir.GetDirectories() 和dir.GetFiles()可以獲取該目錄下的所有子目錄和所有文件,然后對(duì)子目錄再遞歸進(jìn)行以上過程直到遍歷所有文件。
ie收藏夾里的網(wǎng)頁(yè)快捷方式是以".url"后綴存在的,如何從在獲取網(wǎng)頁(yè)的url文本?那就要知道這種文件的格式。我用記事本打開其中一個(gè),看到是這樣的:
- [{000214A0-0000-0000-C000-000000000046}]
 - Prop3=19,2
 - [InternetShortcut]
 - URL=http://go.microsoft.com/fwlink/?linkid=140813
 - IDList=
 
所以可見,URL就在[InternetShortcut]的下一行,假設(shè)從GetFiles得到一個(gè)FileInfo file1,則可用以下代碼得到url:
- if (file1.Extension==".url"){
 - StreamReader sr=new StreamReader(file1.FullName);
 - string url="";
 - while (!sr.EndOfStream) {
 - string s1=sr.ReadLine();
 - if (s1=="[InternetShortcut]")
 - url=sr.ReadLine().Substring(4);
 - }
 - }
 
C#多標(biāo)簽瀏覽器實(shí)現(xiàn)超級(jí)拖放
首先要將主窗體的AllowDrop屬性設(shè)為true。
然后為主窗體的DragDrop和DragEnter事件添加如下事件處理過程:
- private void textBox1_DragDrop(object sender, DragEventArgs e) {
 - NewTab((string)e.Data.GetData(DataFormats.Text));
 - }
 - private void textBox1_DragEnter(object sender, DragEventArgs e) {
 - e.Effect=e.AllowedEffect;
 - }
 
這樣的超級(jí)拖放有一個(gè)特點(diǎn),就是要將網(wǎng)頁(yè)元素拖出WebBrowser的范圍外,同時(shí)又還在主窗體的范圍內(nèi),此時(shí)釋放才有效,至于如何在WebBrowser范圍內(nèi)拖放就有效,本人還找不到一個(gè)很好的方法。
C#多標(biāo)簽瀏覽器實(shí)現(xiàn)自動(dòng)搜索
傳遞給NewTab(string url)函數(shù)的參數(shù)url,有時(shí)并不一定是合法的url格式,我們不妨假定,如果它的格式不正確,則改為用百度
搜索此文本,于是可以這樣處理:
- try {
 - Uri uri=new Uri(url);
 - }
 - catch (Exception) {
 - url="http://www.baidu.com/s?wd="+url;
 - }
 
【編輯推薦】















 
 
 


 
 
 
 