订阅到Rss阅读器

戏水的技术点点

善恶本难分 做佛先做人 虚空生万法 不着诗与文
随笔 - 81, 文章 - 17, 评论 - 560, 引用 - 3
数据加载中……

自定义URL Protocol Handler

缘起: 迅雷,电驴等软件可以在浏览器中点击一个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
<href="xishui://hello">xishui://hello</a>

然后我在浏览器中点这个链接 ,啥效果?你猜



哇咔咔 真的调用了我的test.exe,并且显示了hello !

posted on 2008-01-08 12:54 戏水 阅读(2303) 评论(30)  编辑 收藏 所属分类: 分类不具体

评论

#1楼    回复  引用  查看    

恭喜
2008-01-08 13:01 | Taox      

#2楼    回复  引用    

lz辛苦了
2008-01-08 13:01 | wxdxy [未注册用户]

#3楼    回复  引用  查看    

学习了
2008-01-08 13:07 | ithurricane      

#4楼    回复  引用    

改点注册表也要写上,这样就叫会编程?
2008-01-08 13:24 | lian [未注册用户]

#5楼 [楼主]   回复  引用  查看    

貌似楼上的哥哥有意见哇 ^_^
2008-01-08 13:28 | 戏水      

#6楼    回复  引用  查看    

8错,学习了。
2008-01-08 13:29 | 韩现龙      

#7楼    回复  引用  查看    

这招好啊 收藏...
2008-01-08 13:33 | Yoshow      

#8楼    回复  引用  查看    

楼主,你真好,赶快回去搞dznt!我还等着用呢。
2008-01-08 13:49 | 偶卖糕的      

#9楼    回复  引用  查看    

这只是万里长征第一部,仅仅适用于IE/Win。Firefox又如何,Mac和Linux又如何,还有很多东西值得研究呢,虽然原理都差不多。
2008-01-08 14:12 | Cat Chen      

#10楼    回复  引用  查看    

戏水同学很好,很强大.
2008-01-08 14:13 | BoyLee      

#11楼    回复  引用  查看    

太邪恶了,太强大了
2008-01-08 14:28 | 亚历山大同志      

#12楼    回复  引用  查看    

嗯,虽然大家一看,不就是改改注册表嘛,这么简单,可是你要找出这个方法比较难~~~
真是长见识了~~~学习
2008-01-08 14:32 | pengyuan      

#13楼    回复  引用  查看    

很黄很暴力
2008-01-08 14:34 | 周克      

#14楼 [楼主]   回复  引用  查看    

@Cat Chen 说的没错 。Mac 我没试验过
ie 和 firefox 貌似都可以呢。

@偶卖糕的
您要用Discuz!NT嘛? 用的话call me

@ 亚历山大 兄
您也来啦??? 黄土铺路 ,净水泼街 迎接哟~~ 不过您这句 也忒深刻了
还有下面那个 "很黄很暴力"~~ 看来mop影响力很大啊。
2008-01-08 14:58 | 戏水      

#15楼    回复  引用  查看    

长点见识!
2008-01-08 15:14 | 心悦      

#16楼    回复  引用  查看    

支持!曾经研究过淘宝旺旺,也是这么弄的
2008-01-08 15:18 | SZW      

#17楼    回复  引用  查看    

支持楼主,研究的精神是最可贵的
2008-01-08 15:36 | Wilensky      

#18楼    回复  引用    

很久以前的文章

http://www.blogjava.net/wujun/archive/2007/03/30/107382.html

2008-01-08 16:04 | hello.blog [未注册用户]

#19楼    回复  引用    

学习了。。。好东东啊。。。
2008-01-08 16:05 | yjj [未注册用户]

#20楼    回复  引用  查看    

长见识了
2008-01-08 16:09 | egmkang      

#21楼    回复  引用  查看    

早上在新手区翻到同样一篇文章,而且POST时间比楼主的早十几个小时。

http://www.cnblogs.com/hwade/archive/2008/01/08/1029686.html
2008-01-08 16:12 | Shawer      

#22楼    回复  引用  查看    

http://regedit.anytome.com/20060214094021820418131452020050420/9.xml
偶早过你发过了哦,哈全~
而且偶的是.net操作注册表哦,哈哈
2008-01-08 17:17 | 没剑      

#23楼    回复  引用  查看    

不错,支持:)
2008-01-08 17:36 | 代震军      

#24楼    回复  引用  查看    

“这个哥哥喜欢写繁体字”
他应该是台湾的同胞兄弟,他们本来就用繁体!
2008-01-08 18:38 | Enzo      

#25楼    回复  引用    

楼主 我爱你!!
2008-01-08 19:36 | C+++ [未注册用户]

#26楼    回复  引用    

很好很强大
很黄很暴力
要有爱
2008-01-08 23:10 | xmlcss [未注册用户]

#27楼    回复  引用    

很好玩耶
2008-01-09 13:52 | 蜡笔小辉 [未注册用户]

#28楼 [楼主]   回复  引用  查看    

@ Shawer
俺 在文章开头不是说了么 俺探索这个问题的时候 找到了
http://www.cnblogs.com/hwade/archive/2008/01/08/1029686.html
这个文
2008-01-09 15:09 | 戏水      

#29楼    回复  引用  查看    

好黄好暴力
2008-01-09 22:37 | xrainfir      

#30楼    回复  引用    

期望DZNT的分析文章呢。
2008-01-20 15:52 | mini188 [未注册用户]

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-01-08 13:00 编辑过


相关链接: