2016-07-05 102 views
5

Sto usando BrendanGrant.Helpers.FileAssociation; (un pacchetto NuGet) per creare associazioni di file per la mia applicazione. Funziona bene finora. Tuttavia, ho un problema con i ProgramVerb s:Perché le mie voci del menu di scelta del contesto sono minuscole?

Quando creo un ProgramAssociation e aggiungi verbi in questo modo:

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

Il Bearbeiten e Öffnen (modificare e aperti) le parole chiave sono in minuscolo nel menu contestuale di Windows Explorer:

enter image description here

ho nominato il 2 ° ingresso WAAAA per verificare se qualcosa solo cambiando il primo carattere, ma a quanto pare la sua non.

Cosa devo modificare, in modo che Bearbeiten e Öffnen siano maiuscoli nel menu di scelta rapida?

risposta

4

Ho controllato questa libreria e sembra che tu non abbia alcuna influenza su questo comportamento.

Questa è la linea che cambia in minuscolo:

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

Invece di assegnazione di raccolta si dovrebbe usare AddVerb (ProgramVerb verbo) metodo e quindi maiuscolo deve essere mantenuto:

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

*** Una foto?! *** Hai postato * ap icture * di una singola riga di codice, invece di copiare e incollare la riga di codice? –

+0

@PawelMaga posso semplicemente usare il codice che hai postato al posto della libreria? O conosci qualche altra libreria? – Mafii

+0

@Mafii sfortunatamente non puoi, guarda la mia risposta modificata. –