2009-12-03 14 views
33

Voglio scrivere un piccolo strumento, che fa il seguente:L'integrazione in Windows Explorer menu contestuale

Quando si fa clic destro su un file con un certo file-estensione del menu contestuale di Windows Explorer mostra una voce aggiuntiva.

Quando si fa clic su questa voce, viene avviato un determinato EXE con questo file come uno dei suoi parametri.

Mi piacerebbe utilizzare C# /. NET 2.0 per questo. Se non è possibile, potrei farlo anche con C++/Win32.

Le mie domande sono:

  1. E 'possibile con C# .NET 2.0?
  2. Quali sono le funzioni necessarie per l'integrazione nel menu di scelta rapida di Esplora risorse?
  3. Come posso renderlo permanente? (Non voglio riavviare questo strumento dopo ogni avvio)
  4. A cosa devo prestare particolare attenzione? (diversi SO, autorizzazioni di sicurezza, ecc.)

risposta

4

Tutto ciò che devi fare è aggiungere alcune cose al registro. Quindi sì, puoi farlo con .NET 2.0. Ecco uno example of how to add Edit with Notepad.

% 1 è il file selezionato se ricordo bene.

+2

Questo NON funzionerà con Vista e Win7. Solo sotto XP e 2000. Non so perché. –

+1

Penso che i percorsi del registro siano diversi, ma dovrebbe comunque funzionare: http://www.vistax64.com/tutorials/89829-start-menu-customize-context-menu.html –

22

È necessario accedere al Registro di sistema e aggiungere una chiave sotto root\\File\\shell o root\Folder\\shell, a seconda di quali elementi si desidera visualizzare la voce di menu.

Prova this article at CodeProject, è abbastanza utile.

Modifica: C'è another article here che può essere di aiuto.

+0

http://www.codeproject.com /KB/cs/dateparser.aspx – Kiquenet

+0

+1 per il collegamento al grande progetto 'menu di scelta rapida della shell'. –

+0

Ancora utile, grazie Mark –

3

È, per inciso, non supportato l'utilizzo di .NET per estensioni della shell, a causa dell'attuale impossibilità di ospitare più versioni di runtime nello stesso processo (.NET 4 risolverà questa restrizione).

Considerare il caso in cui si hanno due estensioni della shell; uno per .NET 3.5, uno per .NET 1. Quale runtime verrà caricato nel tuo processo? Bene, è più o meno casuale - dipende da quale estensione della shell viene caricata prima. A volte potrebbe essere il runtime 2.0, a volte potrebbe essere il runtime 1.1.

Questo è anche un problema se un programma .NET crea finestre di dialogo file comuni; l'estensione della shell potrebbe caricare o meno, e potrebbe o meno essere eseguita con la versione runtime corretta.

Pertanto, se si scende a Shell extension route, è necessario utilizzare nativo C++/COM/Win32.

+0

Il runtime .Net 4.0 più recente supporta il caricamento side by side del .Net 4.0 runtime (e TUTTI i tempi di funzionamento futuri) con precedenti runtime .Net. Vedere il seguente estratto da http://msdn.microsoft.com/en-us/magazine/ee819091.aspx "Con la possibilità di avere più runtime in esecuzione con qualsiasi altro runtime, ora possiamo offrire supporto generale per la scrittura gestita estensioni della shell, anche quelle che vengono eseguite in-process con applicazioni arbitrarie sulla macchina. " – logicnp

Problemi correlati