我该如何实现下图所示的效果?假设前 3 个项目是文本文件,每个文件都使用不同的文本文件模板,而第 4 个项目不使用模板,即只是一个空白文本文件。请注意,txt 只是一个例子,我想将其扩展到其他文件扩展名。
这个问题没有被任何答案解决如何向“新”上下文菜单添加项目?,因此我按照建议提出了一个新问题。
创建一个文件(a.txt)并放置在C:\WINDOWS\SHELLNEW中。然后进行以下测试。
使用此代码将导致创建一个扩展名为 .000 而不是 txt 的文件。
Windows Registry Editor Version 5.00
; new file type
[HKEY_CLASSES_ROOT\.000]
@="000"
; template
[HKEY_CLASSES_ROOT\.000\ShellNew]
"FileName"="a.txt"
; file type name
[HKEY_CLASSES_ROOT\000]
@="Test"
将 FileName 键添加到 .txt reg 键只允许使用 1 个模板,因为它只允许 1 个文件的路径。
[HKEY_CLASSES_ROOT\.txt\ShellNew]
"FileName"="a.txt"
使用此代码添加了一个上下文菜单项,但它没有使用指定的模板和上下文菜单名称。
Windows Registry Editor Version 5.00
; new file type
[HKEY_CLASSES_ROOT\.000]
@="textfile"
; template
[HKEY_CLASSES_ROOT\.000\ShellNew]
"FileName"="a.txt"
; file type name
[HKEY_CLASSES_ROOT\000]
@="Test"
使用此代码将导致不出现上下文菜单项。
Windows Registry Editor Version 5.00
; new file type
[HKEY_CLASSES_ROOT\.000]
@="txt"
; template
[HKEY_CLASSES_ROOT\.000\ShellNew]
"FileName"="a.txt"
; file type name
[HKEY_CLASSES_ROOT\000]
@="Test"
答案1
我有一种方法可以做到这一点,如下所示。我假设您需要两个.txt
文件模板:一个“默认”模板,另一个我称之为“脚本模板”。我认为您可以根据自己的需要进行调整。
编写一个.reg
文件,其中包含(改编自这里):
; ------- .txt default ----------
; new file type
[HKEY_CLASSES_ROOT\.txt]
@="txt"
; template
[HKEY_CLASSES_ROOT\.txt\ShellNew]
"FileName"="C:\\Path\\to\\your\\template.txt"
; file type name
[HKEY_CLASSES_ROOT\txt]
@="Text File"
; ------- .txt script ----------
; new file type
[HKEY_CLASSES_ROOT\.script.txt]
@="script.txt"
; template
[HKEY_CLASSES_ROOT\.script.txt\ShellNew]
"FileName"="C:\\Path\\to\\your\\template_script.txt"
; file type name
[HKEY_CLASSES_ROOT\script.txt]
@="Script text File"
基本上,我们.script.txt
为其创建一个虚假的扩展和一个模板。
此方法的唯一缺点是,您新创建的脚本文件将被命名为New Script text File.script.txt
,其中包含您可能不想要的额外内容.script
。但由于扩展名以 结尾.txt
,因此以这种方式创建的文件将使用与 .txt 扩展名关联的任何程序打开。