2016-07-05 14 views
5

Ich verwende BrendanGrant.Helpers.FileAssociation; (ein NuGet-Paket), um Dateizuordnungen für meine Anwendung zu erstellen. Es funktioniert soweit gut. Allerdings habe ich ein Problem mit den ProgramVerb s:Warum sind meine Kontextmenu-Einträge in Kleinbuchstaben?

Wenn ich eine ProgramAssociation und fügen Sie Verben es wie folgt aus:

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\"") 
    }); 
} 

Das Bearbeiten und öffnen (bearbeiten und offen) Schlüsselwörter in der contextmenu klein geschrieben werden von Windows-Explorer:

enter image description here

nannte ich den zweiten Eintrag waaaa zu testen, wenn es nur etwas, um das erste Zeichen zu ändern, aber anscheinend ist es nicht.

Was muss ich ändern, damit meine Bearbeitungen und Öffnen im Kontextmenü Großbuchstaben sind?

Antwort

4

Ich habe diese Bibliothek überprüft und es scheint, dass Sie keinen Einfluss auf dieses Verhalten haben.

Das ist die Linie, die Klein ändert:

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(); 
} 

Statt Sammlung Zuordnung Sie AddVerb (ProgramVerb Verb) Methode und dann sollten Großbuchstaben gehalten werden verwenden sollten:

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\"")); 
+2

*** Ein Bild?! *** Du hast gepostet * ap Bild * einer einzelnen Codezeile, anstatt nur die Codezeile zu kopieren und einzufügen? –

+0

@PawelMaga kann ich einfach den Code verwenden, den Sie unten anstelle der Bibliothek gepostet haben? Oder kennen Sie zufällig eine andere Bibliothek? – Mafii

+0

@Mafii kann man leider nicht, schau dir meine bearbeitete Antwort an. –

Verwandte Themen