Arasfon Asked:2020-12-17 03:27:33 +0000 UTC2020-12-17 03:27:33 +0000 UTC 2020-12-17 03:27:33 +0000 UTC 在浏览器中打开链接时如何运行我的程序? 772 有一个程序,你需要为它做一个链接,例如,像 Steam: steam://open/friends。它应该在浏览器中打开并启动我需要的窗口;请告诉我它是如何完成的。 c# 1 个回答 Voted Best Answer A K 2020-12-17T04:02:35Z2020-12-17T04:02:35Z 我将使用另一个程序的示例-sales logix(缩写-slx)进行解释,它注册了它的协议slx://,例如,链接可以是这样的slx://account/12345:。 事情真的很酷:可以通过邮件将这样的链接发送给同事,然后通过单击链接,打开一个带有客户端 ID=12345 窗口的应用程序。 如果你想创建自己的协议,那么你需要做两件事: 在操作系统中注册协议和将处理它的程序; 在程序中规定协议处理。 在此链接上,您可以选择通过编辑注册表来注册协议(在企业界更方便 - 使用 Active Directory 策略将 reg 文件部署到必要的计算机,而不是手动配置每台计算机) ,但是如果您真的想在没有注册表魔术的情况下手动执行此操作,那么在控制面板中的某个地方会出现“默认程序”之类的项目。 我复制了一个示例 reg 文件,以防链接出错: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\slx] @="SalesLogix Protocol Handler" "URL Protocol"="" [HKEY_CLASSES_ROOT\slx\DefaultIcon] @="C:\\Program Files\\SalesLogix\\salesLogix.exe" [HKEY_CLASSES_ROOT\slx\shell] [HKEY_CLASSES_ROOT\slx\shell\open] [HKEY_CLASSES_ROOT\slx\shell\open\command] @="\"C:\\Program Files\\SalesLogix\\SalesLogixUrlLink.exe\" %1" 好吧,你实际上需要在你的程序中支持这个协议。 我认为如何做到这一点绝对清楚 - 每个程序都有一个 Main 方法: static void Main(string[] param) 您需要根据您的逻辑解析传递的命令行参数和处理。 如果程序已安装在计算机上并且协议已注册,则将从网页和邮件中调用它。您甚至可以像 Steam 一样将此链接输入到快捷方式中,它也可以使用。 更新。传递的链接将完全在 args[0] 中,您需要自己解析它,分离协议。琐碎的测试: 在 c:\temp\proba01.exe 中: static void Main(string[] args) { var i = 0; foreach (var ar in args) { Console.WriteLine($"{i} = {ar}"); i++; } Console.ReadLine(); } 制作处理程序: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\s2x] @="SalesLogix Protocol Handler" "URL Protocol"="" [HKEY_CLASSES_ROOT\s2x\DefaultIcon] @="C:\\temp\\proba01.exe" [HKEY_CLASSES_ROOT\s2x\shell] [HKEY_CLASSES_ROOT\s2x\shell\open] [HKEY_CLASSES_ROOT\s2x\shell\open\command] @="\"C:\\temp\\proba01.exe\" %1" 演示页面: <html> <body> <a href="s2x://account/123">test</a> </body> </html> 在输出我们有:
我将使用另一个程序的示例-sales logix(缩写-slx)进行解释,它注册了它的协议
slx://,例如,链接可以是这样的slx://account/12345:。事情真的很酷:可以通过邮件将这样的链接发送给同事,然后通过单击链接,打开一个带有客户端 ID=12345 窗口的应用程序。
如果你想创建自己的协议,那么你需要做两件事:
在此链接上,您可以选择通过编辑注册表来注册协议(在企业界更方便 - 使用 Active Directory 策略将 reg 文件部署到必要的计算机,而不是手动配置每台计算机) ,但是如果您真的想在没有注册表魔术的情况下手动执行此操作,那么在控制面板中的某个地方会出现“默认程序”之类的项目。
我复制了一个示例 reg 文件,以防链接出错:
好吧,你实际上需要在你的程序中支持这个协议。
我认为如何做到这一点绝对清楚 - 每个程序都有一个 Main 方法:
您需要根据您的逻辑解析传递的命令行参数和处理。
如果程序已安装在计算机上并且协议已注册,则将从网页和邮件中调用它。您甚至可以像 Steam 一样将此链接输入到快捷方式中,它也可以使用。
更新。传递的链接将完全在 args[0] 中,您需要自己解析它,分离协议。琐碎的测试:
在 c:\temp\proba01.exe 中:
制作处理程序:
演示页面:
在输出我们有: