Crear un elemento del menú contextual del Shell de Windows que tome un solo archivo como argumento es fácil. Vea esta pregunta para un ejemplo.
Sin embargo, ¿cómo se crea un elemento del menú contextual que toma varios archivos como argumentos? Digamos, para una herramienta de combinación de diferencias (en mi caso P4Merge), aunque la misma técnica sin duda sería aplicable también para otras aplicaciones.
He instalado P4Merge pero no agrega un elemento al menú contextual automáticamente, por lo que tendré que hacerlo manualmente.
Cuando intenté usar:
"C:\Program Files\Perforce\p4merge.exe" %1 %2
como la línea de comando recibí un error:
Errores: se necesitan al menos dos archivos. No se puede abrir solo un archivo. P4Merge necesita 0, 2 o 3 archivos.
Cuando intenté usar:
"C:\Program Files\Perforce\p4merge.exe" %0 %1
Como línea de comando, abrió dos instancias de P4Merge, una para cada archivo.
Parece que los nombres de archivo correctos se están pasando a% 0 y% 1, pero se está ejecutando una instancia diferente de la aplicación P4Merge para cada uno.
Actualmente tengo la herramienta DiffMerge de SourceGear que tiene un elemento en el menú contextual de Shell y que funciona muy bien, ya que puedo seleccionar dos archivos y usar el elemento del menú contextual para ejecutar una diferencia en ellos. Intenté buscar en el registro para ver qué argumentos usa DiffMerge, pero no pude encontrar una línea de comandos de DiffMerge que incluyera argumentos.
fuente
Respuestas:
También puede intentar agregar el programa al menú Enviar a.
fuente
Al buscar la respuesta, parece que no hay una solución simple y que se necesita una extensión de shell. Mirando nuevamente las entradas del registro para DiffMerge, parece usar una extensión de shell: DiffMergeShellExtension64.dll. Si P4Merge no tiene una extensión de shell de este tipo, parece que la única forma en que podría hacerlo funcionar correctamente en el menú contextual del Explorador de Windows sería escribir una yo mismo.
La guía completa de idiotas para escribir series de extensiones de shell en Code Project es una guía útil para escribir extensiones de shell. La Parte II de la serie se trata de escribir una extensión que maneje múltiples archivos a la vez (exactamente lo que necesito).
Advertencia: La guía completa de idiotas para escribir extensiones de shell utiliza C y COM, ATL (Active Template Library) y MFC (Microsoft Foundation Classes). Por lo tanto, escribir una extensión de shell, si no está familiarizado con esas tecnologías, será un proceso largo y potencialmente difícil; definitivamente no es algo que puedas hacer en una hora.
fuente
Puede hacerlo con mi programa context-menu-launcher (instancia única) :
fuente
.exe
archivos en sus respuestas sin dejar claro que comenzará una descarga automática.