PDA

Ver la Versión Completa : Mostrar directorio con ShellExecute


MON___
14-07-2007, 19:18:47
Ante todo deciros que empleo Windows XP
Mediante esta función del API
shellExecute(application.Handle, 'explore', 'c:\carpeta_contenedora\archivo.exe', nil, nil, SW_SHOWDEFAULT);

Se me abre el administrador de archivos con la CARPETA CONTENEDORA del archivo "archivo.exe". Esto es lo que pretendo y funciona.
Pero mi consulta es la siguiente: el administrador de archivos se abre con el ÁRBOL DE CARPETAS a la izquierda y esto es lo que quiero evitar.
¿Alguien que me pueda dar una solución?

dec
14-07-2007, 21:13:03
Hola,

Echa un vistazo en la ayuda de la función ShellExecute() (http://msdn2.microsoft.com/en-us/library/ms647732.aspx). Puedes usar el parámetro "open" en lugar de "explore" y pasar, directamente, a continuación, la ruta de la propia carpeta a mostrar: no hace falta que sea un archivo de dicha carpeta la ruta que proporciones.

MON___
14-07-2007, 21:35:33
Hola,

Echa un vistazo en la ayuda de la función ShellExecute() (http://msdn2.microsoft.com/en-us/library/ms647732.aspx). Puedes usar el parámetro "open" en lugar de "explore" y pasar, directamente, a continuación, la ruta de la propia carpeta a mostrar: no hace falta que sea un archivo de dicha carpeta la ruta que proporciones.
Muchas gracias, DEC. Tienes razón. No se me había ocurrido. Con el parámetro "open" (o NIL) y la ruta de la carpeta se me muestra en el ADMINISTRADOR DE ARCHIVOS sin el árbol de carpetas en la parte izquierda.
Solucionada mi duda. ¡Gracias!

Loarik
26-03-2008, 12:38:30
hola,
estoy ejecutando la siguiente instrucción
if ShellExecute(GetActiveWindow, nil, PChar(Carpeta), nil, nil, SW_SHOW)<=32 then....
para abrir una carpeta, todo correcto excepto que, si no he entendido mal, no tendría que mostrar el arbol de directorios a la izquierda, pero SI los muestra con lo que permite navegar por todo el disco duro.
Que estoy haciendo mal?
¿Puede influir que trabaje con Windows Vista?

dec
26-03-2008, 12:50:28
Hola,

Pues puede ser que tenga algo que ver lo que dices, según leo en la documentación de la función "ShellExecute()". Creo que debes especificar "open", en lugar de "nil". A ver si así el asunto va como quieres. En otro caso... no sabría qué más decirte, sino es que, sea como sea, no podrás impedir que el usuario se mueva en la carpeta que le muestres. De hecho, no tienes control sobre dicha carpeta y lo que el usuario haga, utilizando "ShellExecute()". Quiero decir que, si buscas algo así, tal vez deberías plantearte otra solución.

Loarik
26-03-2008, 13:07:00
Gracias,

Lo de utilizar 'open' ya lo probé, y funciona igual. Seguro que el fallo tiene que ver con Vista. De todas maneras prefieren que se muestre el árbol de carpetas, con lo que por ahora ya no tengo el problema.
Muchas gracias por la rapidez, hasta otra...