C#多标签浏览器功能的扩展

开发 后端
本文介绍了C#多标签浏览器功能的扩展,供大家参考。

假设NewTab(string url)是前面已经完成的在新标签中打开链接的函数。

C#多标签浏览器实现打开主页:

这就要访问注册表,获取ie首页。

  1. string homepage="";  
  2. try {  
  3.     homepage =(string)Registry.GetValue(  
  4.     "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Internet Explorer\\Main",  
  5.     "Start Page""");  
  6. }  
  7. catch (Exception) {}  
  8. NewTab(homepage); 

使用try-catch是为了防止读取注册表失败,抛出异常。

C#多标签浏览器实现“粘贴并打开”:

其实就是要获取剪贴板中的文本。

  1. NewTab(Clipboard.GetText()); 

恢复关闭的网页:

这就需要在前面所说的关闭标签操作的同时,把即将关闭的标签的url记录起来。可以用WebBrowser.Url.AbsoluteUri来获取这个url。假设这些关闭过的url储存在一个名为closed的字符串数组中。

然后就是要在用户点击撤销按钮的时候弹出这个url列表:

  1. ContextMenuStrip menu=new ContextMenuStrip();  
  2. for (int i=0; i< closed.Count; i++)  
  3.     menu.Items.Add(closed[i]);  
  4. menu.ItemClicked+=(o1,e1)=>NewTab(e1.ClickedItem.Text);  
  5. menu.Show((Control)sender, e.Location); 

(o1,e1)=>NewTab(e1.ClickedItem.Text)是lambda表达式,代表一个函数,当menu被点击的时候,就会调用这个函数。

读取打开ie收藏

首先获取ie收藏夹所在路径:

  1. string path=(string)Registry.GetValue(  
  2.     "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",  
  3.     "Favorites"""); 

然后获取路径所表示的文件夹对象:       

  1. DirectoryInfo dir=new DirectoryInfo(path);  

用dir.GetDirectories() 和dir.GetFiles()可以获取该目录下的所有子目录和所有文件,然后对子目录再递归进行以上过程直到遍历所有文件。

ie收藏夹里的网页快捷方式是以".url"后缀存在的,如何从在获取网页的url文本?那就要知道这种文件的格式。我用记事本打开其中一个,看到是这样的:

  1. [{000214A0-0000-0000-C000-000000000046}]  
  2. Prop3=19,2  
  3. [InternetShortcut]  
  4. URL=http://go.microsoft.com/fwlink/?linkid=140813  
  5. IDList= 

所以可见,URL就在[InternetShortcut]的下一行,假设从GetFiles得到一个FileInfo file1,则可用以下代码得到url:

  1. if (file1.Extension==".url"){  
  2.     StreamReader sr=new StreamReader(file1.FullName);  
  3.     string url="";  
  4.     while (!sr.EndOfStream) {  
  5.         string s1=sr.ReadLine();  
  6.         if (s1=="[InternetShortcut]")  
  7.             url=sr.ReadLine().Substring(4);  
  8.     }  
  9. }  

C#多标签浏览器实现超级拖放

首先要将主窗体的AllowDrop属性设为true。

然后为主窗体的DragDrop和DragEnter事件添加如下事件处理过程:

  1. private void textBox1_DragDrop(object sender, DragEventArgs e) {  
  2.     NewTab((string)e.Data.GetData(DataFormats.Text));  
  3. }  
  4. private void textBox1_DragEnter(object sender, DragEventArgs e) {  
  5.     e.Effect=e.AllowedEffect;  

这样的超级拖放有一个特点,就是要将网页元素拖出WebBrowser的范围外,同时又还在主窗体的范围内,此时释放才有效,至于如何在WebBrowser范围内拖放就有效,本人还找不到一个很好的方法。

C#多标签浏览器实现自动搜索

传递给NewTab(string url)函数的参数url,有时并不一定是合法的url格式,我们不妨假定,如果它的格式不正确,则改为用百度

搜索此文本,于是可以这样处理:

  1. try {  
  2.     Uri uri=new Uri(url);  
  3. }  
  4. catch (Exception) {  
  5.     url="http://www.baidu.com/s?wd="+url;  

【编辑推荐】

  1. 关于C#知识点总结
  2. C#开发和使用中的33个技巧
  3. SQL Server存储过程介绍
  4. C#下SQL Server 2008表类型参数传递
  5. C#向SQL Server中插入记录时的问题
责任编辑:book05 来源: 新浪博客
相关推荐

2009-09-04 09:27:48

C#调用浏览器

2009-09-03 19:00:15

C#判断浏览器

2011-09-15 16:33:25

2012-08-02 10:21:49

DOM浏览器

2009-08-31 14:54:35

C#对象浏览器

2009-08-20 10:54:29

C#做浏览器源程序

2021-06-08 15:13:45

Safari浏览器扩展

2009-08-18 13:54:41

C#标签

2021-03-09 14:56:25

Safari浏览器苹果

2013-03-19 14:16:51

Chrome浏览器

2009-09-04 11:03:32

C#文件浏览器

2021-08-18 09:27:12

微软Edge浏览器

2009-09-03 17:49:59

C#浏览器开发

2015-01-21 15:45:50

斯巴达浏览器

2021-05-17 14:15:16

Edge浏览器Android翻译功能

2009-09-03 17:54:04

C#开发浏览器

2009-09-03 18:55:08

C#判断浏览器

2009-09-04 10:05:16

C#调用浏览器浏览器的原理

2011-06-28 14:26:05

Opera浏览器

2013-11-22 09:58:36

点赞
收藏

51CTO技术栈公众号