C#多標(biāo)簽瀏覽器功能的擴(kuò)展
假設(shè)NewTab(string url)是前面已經(jīng)完成的在新標(biāo)簽中打開鏈接的函數(shù)。
C#多標(biāo)簽瀏覽器實(shí)現(xiàn)打開主頁:
這就要訪問注冊表,獲取ie首頁。
- string homepage="";
- try {
- homepage =(string)Registry.GetValue(
- "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Internet Explorer\\Main",
- "Start Page", "");
- }
- catch (Exception) {}
- NewTab(homepage);
使用try-catch是為了防止讀取注冊表失敗,拋出異常。
C#多標(biāo)簽瀏覽器實(shí)現(xiàn)“粘貼并打開”:
其實(shí)就是要獲取剪貼板中的文本。
- NewTab(Clipboard.GetText());
恢復(fù)關(guān)閉的網(wǎng)頁:
這就需要在前面所說的關(guān)閉標(biāo)簽操作的同時(shí),把即將關(guān)閉的標(biāo)簽的url記錄起來??梢杂肳ebBrowser.Url.AbsoluteUri來獲取這個(gè)url。假設(shè)這些關(guān)閉過的url儲存在一個(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í)候,就會調(diào)用這個(gè)函數(shù)。
讀取打開ie收藏
首先獲取ie收藏夾所在路徑:
- string path=(string)Registry.GetValue(
- "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
- "Favorites", "");
然后獲取路徑所表示的文件夾對象:
- DirectoryInfo dir=new DirectoryInfo(path);
用dir.GetDirectories() 和dir.GetFiles()可以獲取該目錄下的所有子目錄和所有文件,然后對子目錄再遞歸進(jìn)行以上過程直到遍歷所有文件。
ie收藏夾里的網(wǎng)頁快捷方式是以".url"后綴存在的,如何從在獲取網(wǎng)頁的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)超級拖放
首先要將主窗體的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;
- }
這樣的超級拖放有一個(gè)特點(diǎn),就是要將網(wǎng)頁元素拖出WebBrowser的范圍外,同時(shí)又還在主窗體的范圍內(nèi),此時(shí)釋放才有效,至于如何在WebBrowser范圍內(nèi)拖放就有效,本人還找不到一個(gè)很好的方法。
C#多標(biāo)簽瀏覽器實(shí)現(xiàn)自動搜索
傳遞給NewTab(string url)函數(shù)的參數(shù)url,有時(shí)并不一定是合法的url格式,我們不妨假定,如果它的格式不正確,則改為用百度
搜索此文本,于是可以這樣處理:
- try {
- Uri uri=new Uri(url);
- }
- catch (Exception) {
- url="http://www.baidu.com/s?wd="+url;
- }
【編輯推薦】