当前位置:首页>网络学院>程序开发>c#教程>文章内容

C#自定义URL Protocol Handler 监视浏览器点击

[ 来源:http://www.it55.com | 作者: | 时间:2008-01-11 | 收藏 | 推荐 ] 【

     缘起: 迅雷,电驴等软件可以在浏览器中点击一个url后自动启动,并执行操作。这是咋实现的呢?俺google了许多 ,还是在园子里找到了一个文 http://www.cnblogs.com/hwade/archive/2008/01/08/1029686.html ,这个哥哥喜欢写繁体字,虽然俺学过书法,认识一些繁体字,但看着还是不爽。
  哎!资质愚钝啊,看了半天没看太明白,但思路是明白了 ,就是要在注册表上动手脚。 于是乎继续google 找到了 http://blogs.gotdotnet.com/noahc/archive/2006/10/19/register-a-custom-url-protocol-handler.aspx 不幸让我看明白了。
  俺简单的说说俺的理解吧。
  
  要实现这个功能笼共分3步。(我们注册一个xishui:// 这样的 protocol-handler,实现在网页中点击xishui://hello,就弹出一个对话框,上面显示“hello”)
  1 按照如下结构建立注册表
  
  其中 [xishui] 是建立在注册表的 [HKEY_CLASSES_ROOT] 主键下。
  2 给相关的键赋值
  
  
  
  大家注意到上面 command 项的值为 c:\test.exe "%1" ,这个"%1"是传递给test.exe的参数。如果我们点击xishui://hello这样的链接 那么%1的值就是“xishui://hello” 这个字符串。
  
  到此我们改写程序生成test.exe了,我们的目标是弹出一个对话框,显示xishui://hello链接中的hello字样。 也就是说我们要用正则表达式来取出"xishui://hello" 中 “xishui://” 后面的部分
  
  我们来写一个控制台程序
  
  using System;
  using System.IO;
  using System.Windows.Forms;
  using System.Text.RegularExpressions;
  
  namespace test
  {
   class Program
   {
   static void Main(string[] args)
   {
   string key = Regex.Match(args[0], @"(?<=://).+?(?=:|/|\Z)").Value;
   MessageBox.Show(key);
   }
   }
  }
  
  让我把编译生成的test.exe 复制到c:\下
  然后 我写了个test.html
  <a href="xishui://hello">xishui://hello</a>
  然后我在浏览器中点这个链接 ,啥效果?你猜
  
  
  哇咔咔 真的调用了我的test.exe,并且显示了hello ! 
   
   
    

(编辑:IT资讯之家 www.it55.com

返回顶部
 

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]