答案1
我不知道如何将其添加到“打开方式”对话框中,但可以将复制 URI 作为该协议的默认操作。只需对注册表进行一些修改即可。在大多数情况下,文件和协议关联正是您从命令行运行某些内容时输入的内容。
文件和协议关联存储在HKEY_CLASSES_ROOT
注册表配置单元中,并从中读取。(有关文件关联的更多信息,这个答案可能会对你有帮助。)
文件.reg
下面列出了您想要执行的操作的一个非常简单的协议定义:
; twitter_protocol.reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\twitter]
@="URL:twitter"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\twitter\shell]
@="open"
[HKEY_CLASSES_ROOT\twitter\shell\open]
[HKEY_CLASSES_ROOT\twitter\shell\open\command]
@="cmd /c ECHO|SET /P=%1|CLIP"
将其复制到名为的文件中twitter_protocol.reg
,然后双击它以将其导入到您的注册表中。
说明
您可以在这些键中指定许多选项。在协议关联的情况下,重要的选项包括:
HKEY_CLASSES_ROOT\<protocol>
- 之前的字符串://
。HKEY_CLASSES_Root\<protocol>
-(Default)
- 协议的描述,例如“Twitter URL”。HKEY_CLASSES_ROOT\<protocol>
-URL Protocol
- 指定这是一个协议关联,应该留空。HKEY_CLASSES_ROOT\<protocol>\shell\open\command
-(Default)
- 指定打开关联应用程序的命令行。
在这种情况下,我们将命令行选项设置为cmd /c ECHO|SET /P=%1|CLIP
,让我们将其分解一下:
cmd /c ...
将打开一个命令提示符窗口来运行您的命令。ECHO
和SET
是命令行例程,而不是独立的应用程序,所以我们需要运行命令提示符才能使用它。ECHO|SET /P=%1
是一种过于复杂的说法,“打印输入时末尾不添加额外的新行”。ECHO
它会将其后写入的所有内容打印到命令提示符中,并在其后添加一个额外的行。|SET /P=
是一种用于删除换行符的技巧。SET
通常用于设置环境变量,但在这种情况下我们不使用它。|
如下所述。%1
是输入。在本例中是twitter://realDonaldTrump/status/266259787405225984
。
|
被称为“管道字符”,这意味着我们将获取其之前的输出并将其作为其之后的输入。CLIP
将读取管道输入(而不是使用它不支持的命令行参数)并将其复制到剪贴板。