我为/ .txt
文件创建了一个上下文shell菜单。
其“动作”类似于“使用记事本编辑”选项。
我可以使用此代码点击菜单打开'记事本' -
subKey.SetValue("", "C:\\Windows\\System32\\notepad.exe");
//subKey is the newly created sub key - The key creation part works fine.
我如何能够使用与“使用记事本编辑”功能类似的功能?或者至少可以获取触发此事件的'.txt'文件的名称?
注意:通过“使用记事本编辑”,我的意思是在记事本中查看所选文件的内容。
答案 0 :(得分:3)
shell(explorer.exe
)将用%1
替换文件名。所以你基本上写道:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\txtfile\shell\openwithnotepad]
@="Open with &Notepad"
[HKEY_CLASSES_ROOT\txtfile\shell\openwithnotepad\command]
@="\"C:\\Windows\\System32\\notepad.exe\" \"%1\""
文件名将作为命令行参数传递给C:\Windows\System32\notepad.exe
。例如,如果您打开D:\blah.txt
,则记事本将收到D:\blah.txt
作为第一个参数。
在C#中,您基本上使用Environment.GetCommandLineArgs()
或args
in Main
来检索文件路径。
一个例子:
string[] commandLineArgs = Environment.GetCommandLineArgs();
string fileToOpen = null;
if (commandLineArgs.Length > 1)
{
if (File.Exists(commandLineArgs[1]))
{
fileToOpen = commandLineArgs[1];
}
}
if (fileToOpen == null)
{
// new file
}
else
{
MyEditor.OpenFile(fileToOpen);
}