0

我为.txt文件创建了一个上下文 shell 菜单。

它的“动作”类似于“用记事本编辑”选项。

我可以使用此代码在单击菜单时打开“记事本”-

subKey.SetValue("", "C:\\Windows\\System32\\notepad.exe");

 //subKey is the newly created sub key - The key creation part works fine.

我将如何使用类似于“使用记事本编辑”功能的功能?或者至少可以获得触发此事件的“.txt”文件的名称?

注意: “使用记事本编辑”是指在记事本中查看所选文件的内容。

4

1 回答 1

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()argsinMain来检索文件路径。

一个例子:

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);
}
于 2013-04-26T15:00:00.820 回答