【问题标题】:Using URI Scheme to Launch Program in NotePad++在 NotePad++ 中使用 URI Scheme 启动程序
【发布时间】:2018-01-17 13:39:48
【问题描述】:

我正在编写一个带有链接的 html 文档,当用户单击它们时,应该会打开一个带有参数的程序。

作为测试此过程的示例,我尝试创建一个 URI 方案,该方案应使用我编写的简单文本文件的参数启动 notepad++.exe

直接从 PowerShell 运行看起来像这样,并成功打开了我的文本文件

PS C:\> & 'C:\Program Files\Notepad++\notepad++.exe' 'C:\TestingDocument.txt'

我按照https://msdn.microsoft.com/library/aa767914(v=vs.85).aspx 的说明进行操作 用于创建 URI(我称我的为“NOTEPAD++”)。并编写了一个如下所示的 html 文件进行测试:

<html> <body> <a href="NOTEPAD++:C:\\TestingDocument.txt" >Test</p> </body> </html>

但是,当我在网络浏览器中单击“测试”链接时,notepad++ 会启动,但也不会打开我的文本文件...

我猜我NOTEPAD++:C:\\TestingDocument.txt 的语法可能不适合传入参数??对此的任何帮助将不胜感激。

编辑

添加了注册表项Computer\HKEY_CLASSES_ROOT\NOTEPADPLUSPLUS

  • (Default)URL:NOTEPADPLUSPLUS Protocol
  • URL Protocol 的空字符串
  • DefaultIcon(Default)"C:\Program Files\Notepad++\notepad++.exe"
  • shell -> open -> command(Default)"C:\Program Files\Notepad++\notepad++.exe" "%1"

【问题讨论】:

  • 您是否尝试将您的 URI 命名为 NotepadPlusPlus 而不是 Notepad+++ 可能是问题所在,因为它用于表示空格(就像 %20)。
  • 更改为NOTEPADPLUSPLUS,结果相同...
  • NOTEPADPLUSPLUS:"C:\\TestingDocument.txt" 怎么样?您有实际编写的注册表项吗?
  • 查看使用注册表项进行编辑。同样添加您显示的引号也不起作用。
  • 看,我不太清楚发生了什么。我相信(Default) 实际上应该是@。此答案与超级用户上的答案相同:superuser.com/questions/585758/…(它们使用.reg 文件,因此您可以创建一个并通过双击将其导入)。另一种选择是将命令定义为"\"C:\\Program Files\\Notepad++\\notepad++.exe\" \"%1\""(注意额外的引号和额外的反斜杠)。

标签: html url-scheme


【解决方案1】:

Notepad++ 的句柄不起作用,因为完整的 URI 作为参数传递,而不仅仅是 NOTEPAD++: url 方案之后的剩余部分。请参阅Registering an Application to a URI Scheme 的相关文档:

如果在注册表中指定的指定打开命令包含 %1 参数,Internet Explorer 将 URI 传递给已注册的可插入协议处理程序应用程序。

你基本上是在打电话……

C:\Program Files\Notepad++\notepad++.exe "NOTEPAD++:C:\\TestingDocument.txt"

... 和 Notepad++ 不理解你的参数。

【讨论】:

  • 嗯,现在我明白了。我从来没有真正打算使用 Notepad++,我只是用它来开始理解使用 URI 方案。这实际上将与我正在编写的自定义应用程序一起使用。我想在我的程序参数处理程序中,我必须处理从第一个参数中解析出所有参数。不像我期望的那样优雅的解决方案,但我仍然可以使用它......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 2010-11-23
相关资源
最近更新 更多