Abrir ejecutable al abrir una carpeta

Iniciado por Kurolox, 15 Julio 2014, 16:39 PM

0 Miembros y 1 Visitante están viendo este tema.

Kurolox

Saludos, estoy intentando hacer esto. Ahora explico que es lo que intento.

Tengo una carpeta con varios archivos de un servidor. Lo que quiero hacer es al dar doble click a la carpeta del servidor, en vez de abrirse la carpeta, se abra el ejecutable del servidor y se inicie, y para abrir la carpeta, hacer click derecho en ella y Abrir, o algo similar.

¿Hay alguna manera de hacerlo como digo? Lo necesito así por motivos prácticos.

Saberuneko

#1
Podrías hacerte un script simple que primero abra la carpeta y posteriormente ejecute el fichero que quieres. De forma que podrías utilizarlo como un acceso directo.

¡Ojo! si lo haces al revés, se ejecutará el exe, pero no se abrirá la carpeta. Esto es porque el script esperará hasta que la aplicación termine antes de realizar la siguiente orden. Ergo, la carpeta no se abriría hasta que terminases el proceso anterior.

En Batch:

Primero:
%SystemRoot%\explorer.exe "Ruta al directorio"

Después:
"Ruta al fichero"

Ejemplo práctico, tenemos el directorio llamado D:\Servidor
Y el archivo a ejecutar es D:\Servidor\Fichero.exe

El script quedaría así:

%SystemRoot%\explorer.exe "D:\Servidor"
"D:\Servidor\Fichero.exe"


Lo pones tal cual en donde lo quieras usar o lo guardas y haces un acceso directo.

Eleкtro

#2
La idea del link me parece de lo más factible, ya que no existe ningún operador del tipo "Abrir Carpeta", es una representación visual del explorer, así que, al menos hasta donde yo se (que ya estuve comiendome la cabeza con la misma pregunta hace unos años) no se puede detectar el click o doble-click de una carpeta, y de ser posible prevenir algo parecido deberías desarrollar un driver (casi náh) para decirle Hola! a los entresijos de la Shell de Windows.

Se puede lograr una 'post'-detección precisa, desarrollando una aplicación más básica (que un driver) que monitorice la ubicación actual del explorer, y una vez hayas accedido a una carpeta específica se podría "salir" de ella y/o ejecutar "X" archivo en su lugar, pero esto más bien sería una detección, no una prevención ...que eso es lo que pretendes.

Lo mejor que se me ocurre para tu caso, y con poca dificultad, sería tomar la idea de Saberuneko, pero en lugar de un acceso directo .lnk, deberías crear y asociar una nueva extensión de archivo, y añadirle un par de opciones para el menú contextual de esa asociación de archivo, las cuales dirían algo como "Abrir en el explorer" y otra  opción que diría "Ejecutar" (esta opción iría encima de la opción del explorer para que fuese la opción predeterminada al hacer doble click sobre el archivo), entonces al hacer doble click sobre el archivo, se ejecutaría el server, y al mostrar el menú contextual de dicha extensión, saldría la opción para abrir en el explorer, esto te proporcionaria la solución final al problema.

El Script de registro:

Código (ini) [Seleccionar]
Windows Registry Editor Version 5.00

# La extensión del archivo.
[HKEY_CLASSES_ROOT\.XXX]
@="ServerFile"; La clave de asociación.

[HKEY_CLASSES_ROOT\ServerFile]; La clave asociada.
[HKEY_CLASSES_ROOT\ServerFile\DefaultIcon]; El icono por defecto de las extensiones que estén asociadas a esta clave.
@="shell32.dll,4"; Índice 4 = Icono 'Carpeta por defecto'.

# La opción Open:
[HKEY_CLASSES_ROOT\ServerFile\Shell\Open]
@=".:: Ejecutar ::."     ; Nombre a mostrar en el menú contextual.
"Position"="Top"         ; Posición en el menú contextual.
"Icon"="shell32.dll,24"  ; Índice 24 = Icono 'Ejecutar'
[HKEY_CLASSES_ROOT\ServerFile\Shell\Open\Command]; El comando asociado a la opción.
@="\"X:\\Server\\Archivo.exe\""                  ; La instrucción del comando.

# La opción OpenInExplorer:
[HKEY_CLASSES_ROOT\ServerFile\Shell\OpenInExplorer]
@=".:: Abrir en el explorador ::."  ; Nombre a mostrar en el menú contextual.
"Position"="Middle"                 ; Posición en el menú contextual.
"Icon"="shell32.dll,9"              ; Índice 9 = Icono 'Disco de Red'
[HKEY_CLASSES_ROOT\ServerFile\Shell\OpenInExplorer\Command]; El comando asociado a la opción.
@="\"Explorer.exe\" \"X:\\Server\""                        ; La instrucción del comando


Obviamente debes asignarle las rutas correctas al script.

Lo guardas como "Archivo.reg" y lo ejecutas, luego creas un archivo dummy llamado "Archivo.xxx" (xxx = la extensión que escogí, la cual puedes modificar a tu gusto), lo colocas donde quieras, y listo.

Saludos.