2009-12-03 15 views
33

Quiero escribir una pequeña herramienta, que hace lo siguiente:La integración en el Explorador de Windows menú contextual del

Al hacer clic en un archivo con una determinada extensión de archivo en el menú contextual de Windows Explorer muestra una entrada adicional.

Al hacer clic en esta entrada se inicia un EXE con este archivo como uno de sus parámetros.

Me gustaría usar C# /. NET 2.0 para esto. Si no es posible, también podría hacerlo con C++/Win32.

Mis preguntas son:

  1. ¿Es posible con C# .NET 2.0?
  2. ¿Cuáles son las funciones necesarias para integrar en el menú contextual del Explorador de Windows?
  3. ¿Cómo puedo hacer esto permanente? (No quiero reiniciar esta herramienta después de cada arranque)
  4. ¿De qué debo tener especial cuidado? (SO diferente, permisos de seguridad, etc.)

Respuesta

4

Todo lo que necesita hacer es agregar algunas cosas al registro. Entonces, sí, puedes hacer esto con .NET 2.0. Aquí hay un example of how to add Edit with Notepad.

% 1 es el archivo seleccionado si mal no recuerdo.

+2

Esto NO funcionará en Vista y Win7. Solo bajo XP y 2000. No sé por qué. –

+1

Creo que las rutas de registro son diferentes, pero aún debería funcionar: http://www.vistax64.com/tutorials/89829-start-menu-customize-context-menu.html –

22

Deberá acceder al registro y agregar una clave debajo de root\\File\\shell o root\Folder\\shell, dependiendo de los elementos en los que desee que aparezca el elemento del menú.

Pruebe this article at CodeProject, es bastante útil.

Editar: Hay another article here que pueden ser de ayuda.

+0

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

+0

+1 para el enlace al gran proyecto de 'menú contextual de shell simple'. –

+0

Todavía útil, gracias Mark –

3

Incidentalmente, no se admite el uso de .NET para extensiones de shell, debido a la incapacidad actual para alojar múltiples versiones de tiempo de ejecución en el mismo proceso (.NET 4 levantará esta restricción).

Considere el caso en el que tiene dos extensiones de shell; uno para .NET 3.5, uno para .NET 1. ¿Qué tiempo de ejecución se cargará en su proceso? Bueno, es más o menos aleatorio: depende de qué extensión de shell se cargue primero. A veces puede ser el tiempo de ejecución 2.0, a veces puede ser el tiempo de ejecución 1.1.

Esto también es un problema si un programa .NET crea diálogos de archivos comunes; su extensión de shell puede o no cargarse, y puede o no ejecutarse con la versión de tiempo de ejecución correcta.

Como tal, si baja al Shell extension route debe usar C++/COM/Win32 nativo.

+0

El último tiempo de ejecución de .NET 4.0 admite en el proceso la carga paralela del tiempo de ejecución de .Net 4.0 (y TODOS los tiempos de ejecución futuros) con tiempos de ejecución .Net más tempranos. Vea el fragmento siguiente de http://msdn.microsoft.com/en-us/magazine/ee819091.aspx "Con la capacidad de tener múltiples tiempos de ejecución en proceso con cualquier otro tiempo de ejecución, ahora podemos ofrecer soporte general para escritura administrada extensiones de shell, incluso aquellas que se ejecutan en proceso con aplicaciones arbitrarias en la máquina ". – logicnp

Cuestiones relacionadas