【问题标题】:Why are my contextmenu entries lower case?为什么我的上下文菜单条目是小写的?
【发布时间】:2016-07-05 13:51:09
【问题描述】:

我正在使用BrendanGrant.Helpers.FileAssociation;(一个 NuGet 包)为我的应用程序创建文件关联。到目前为止它工作正常。但是,ProgramVerbs 有问题:

当我创建一个 ProgramAssociation 并向它添加动词时:

  var pai = new ProgramAssociationInfo(fai.ProgID);

  pai.Create(
    "App name",
    new[]
    {
      new ProgramVerb("Öffnen", Assembly.GetEntryAssembly().Location + " \"%1\""),
      new ProgramVerb("Bearbeiten", Assembly.GetEntryAssembly().Location + " \"%1\"")
    });
}

Bearbeiten 和 Öffnen(编辑和打开)关键字在 Windows 资源管理器的上下文菜单中是小写的:

我将第二个条目命名为 WAAAA 以测试它是否仅更改了第一个字符,但显然不是。

我必须改变什么,以便我的 Bearbeiten 和 Öffnen 在上下文菜单中是大写的?

【问题讨论】:

    标签: c# windows windows-explorer file-association


    【解决方案1】:

    我检查了这个库,看来你对这种行为没有影响。

    这是变成小写的那一行:

    RegistryKey subKey2 = subKey1.CreateSubKey(verb.Name.ToLower());
    

    _

    protected void SetVerbs(ProgramVerb[] verbs)
    {
      if (!this.Exists)
        throw new Exception("Extension does not exist");
      RegistryKey registryKey = RegistryHelper.AssociationsRoot.OpenSubKey(this.progId, true);
      if (registryKey.OpenSubKey("shell", true) != null)
        registryKey.DeleteSubKeyTree("shell");
      RegistryKey subKey1 = registryKey.CreateSubKey("shell");
      foreach (ProgramVerb verb in verbs)
      {
        RegistryKey subKey2 = subKey1.CreateSubKey(verb.Name.ToLower());
        RegistryKey subKey3 = subKey2.CreateSubKey("command");
        subKey3.SetValue(string.Empty, (object) verb.Command, RegistryValueKind.ExpandString);
        subKey3.Close();
        subKey2.Close();
      }
      ShellNotification.NotifyOfChange();
    }
    

    你应该使用 AddVerb(ProgramVerb verb) 方法而不是集合赋值,然后应该保留大写:

    pai.Create("App name", new ProgramVerb[0]);
    pai.AddVerb(new ProgramVerb("Öffnen", Assembly.GetEntryAssembly().Location + " \"%1\""));
    pai.AddVerb(new ProgramVerb("Bearbeiten", Assembly.GetEntryAssembly().Location + " \"%1\""));
    

    【讨论】:

    • @PawelMaga 我可以使用您在下面发布的代码而不是库吗?或者你碰巧知道任何其他图书馆?
    • @Mafii 很遗憾你不能,看看我编辑的答案。
    • @PawelMaga 哦,嘿,经过一些测试,我自己得出了同样的结论;:D。谢谢您的帮助!这是(可能是最好的)答案。
    • @PawelMaga 我没有意识到你可以传递一个空数组 [0] 所以非常感谢你,你帮了我很大的忙!
    猜你喜欢
    • 1970-01-01
    • 2014-10-09
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多