2012-03-31 66 views
0

我做了一个程序,我想用一些协议启动例如:proto 从浏览器调用类似proto:// 122122。Autoit注册一个协议和执行程序

当用户点击链接时,它会打开我的程序,并将它作为某个变量或某物发送给它。

我对C基本知识++但在这个主题上没有的知识 感谢

回答

0

您需要将协议添加到注册表中,HKEY_CLASSES_ROOT

特别是你需要创建以下注册表项:

[HKCR\proto] 
@="URL:My Protocol" 
"Url Protocol"="" 

[HKCR\proto\shell\open\command] 
@="Path\To\My\Program.exe '%1'" 

然后打开proto://122122将执行Program.exe,并且数字将在$CmdLine[1]可用(假设你使用的AutoIt,因为你标记它这样的,但根本不要提及它)。

编辑:

以编程方式做以上的AutoIt,你需要查看注册表的功能,特别是RegWrite。上述懒,给了一个.reg文件一样的答案,但在AutoIt的它看起来是这样的:

Local $sProtoName = "proto" 

RegWrite("HKCR\" & $sProtoName) 
RegWrite("HKCR\" & $sProtoName, "", "REG_SZ", "URL:My Protocol") 
RegWrite("HKCR\" & $sProtoName, "Url Protocol", "REG_SZ", "") 
RegWrite("HKCR\" & $sProtoName & "\shell\open\command") 
RegWrite("HKCR\" & $sProtoName & "\shell\open\command", "", "REG_SZ", "Path\To\My\Program.exe '%1'") 

正如所有的东西注册表,不这样做,如果你不知道自己在做什么。修改HKCR是相对安全的。最糟糕的情况是你会覆盖一些其他的协议,这是一个可以撤消的痛苦,但我仍然建议先做一些阅读。 Google和往常一样是你最好的朋友,但像this one这样的小朋友可能是个好主意。

要删除上面的代码,只需删除整个“HKCR \ proto”键即可。

+0

哦,对不起,我忘了输入,因为我用我的手机创建。我在哪里添加?我的意思是注册在哪里对不起,我没有任何这方面的知识。 xk – kritya 2012-04-02 17:32:09

+0

@kritya,它并不重要,因为同样的原则适用于任何其他语言。我可以写'argv [1]',它会是一样的。 – Matt 2012-04-02 17:35:28

+0

你没让我说得对。我的意思是我如何将我的协议添加到HKEY_CLASSES_ROOT? – kritya 2012-04-03 09:39:26

相关问题