PDA

Ver la Versión Completa : Abrir archivo


Ivan_25
09-11-2005, 08:50:43
Hola a tod@s!!!. ¿Como puedo hacer para que al abrir un archivo, por ejemplo un jpg, lo abra con la aplicacion que yo quiera?. La sentencia que yo ejecuto para abrir un archivo es esta, pero me lo abre con la aplicacion por defecto:

ShellExecute(NULL, "open", rutanombre1.c_str() ,NULL, NULL, SW_SHOWNORMAL);

Gracias

alt126
09-11-2005, 09:29:39
he probado esto y funciona perfectamente:


String aux;
aux = "c:\\escudo.jpg";
ShellExecute(NULL, "open","c:\\WINDOWS\\system32\\mspaint.exe", aux.c_str(), NULL, SW_SHOWNORMAL);

Y lo abre con el programa que esta puesto, es decir, el paint brush. Si solo pones open, lo abre con el por defecto, si le pones un programa, lo abre con el programa, y en parametros, el nombre del archivo.

Ivan_25
09-11-2005, 10:00:50
Gracias Antoñicoooooooooo!!!!Y a ver si quedamos ya para lo de SI.

alt126
09-11-2005, 10:12:40
pos esta tarde sin falta!!!

voy a mandar un email al "welcome" a ver si va a estar esta tarde...

Ivan_25
09-11-2005, 10:24:32
Mejor mañana, que yo esta tarde no puedo.

Ivan_25
09-11-2005, 10:28:42
El ShellExecute me falla con archivos xls y ppt, me dice que la ruta no es correcta, y sin embargo con todas las otras extensiones si me abre el archivo.

ShellExecute(NULL, "open", rutanombre1.c_str() ,NULL, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, "open", rutanombre2.c_str() ,NULL, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, "open", rutanombre3.c_str() ,NULL, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, "open", rutanombre4.c_str() ,NULL, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, "open", rutanombre5.c_str() ,NULL, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, "open", rutanombre6.c_str() ,NULL, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, "open", rutanombre7.c_str() ,NULL, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, "open", rutanombre8.c_str() ,NULL, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, "open", rutanombre9.c_str() ,NULL, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, "open", rutanombre10.c_str() ,NULL, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, "open", rutanombre11.c_str() ,NULL, NULL, SW_SHOWNORMAL);

¿Podria hacer para que en lugar de hacer el shellexecute para todas las extensiones y la que sea se abra, buscar el nombre del archivo en un directorio, aunque no conozca la extension?Solo conozco el nombre.

alt126
09-11-2005, 10:35:29
No entiendo la pregunta...pero si lo que quieres es que el usuario seleccione un archivo del disco duro y se abra automaticamente...posssss es muy facil...

Tienes que usar el componente TOpenDialog...con eso te permite abrir un dialogo de abrir archivo,imagen...cuando el usuario selecciona el archivo, en una variable tienes el nombre completo del archivo. Entonces solo tienes que hacer un shellexecute de ese archivo...y listo!!!

Que facil es la informatica!!

Ivan_25
09-11-2005, 10:44:25
Nononono, no es eso. Veras, yo tengo un formulario con un dbgrid, donde muestro un monton de gente, entonces selecciono uno y me aparecen todos sus datos en otro formulario, donde tengo un boton que es 'Abrir curriculum'. El curriculum puede ser xls, ppt, doc, etc...pero se tiene que abrir automaticamente el asignado a esa persona sin buscarlo. ¿Me entiendes?. Yo hago eso con shellexecute de la manera que te he puesto antes, pero los xls y los ppt no se me abren, me dice que falla la ruta, y todos los demas si funcionan y son todos iguales. He copiado los xls y los ppt en la carpeta del ejecutable y entonces si me los abre, pero los he de tener en la carpeta expedientes. ¿Entiendes lo que digo?. ¿Sabes porque falla concretamente en esos dos?

alt126
09-11-2005, 12:28:20
posssssss comprobado que funciona:


ShellExecute(NULL, "open", "C:\\a.xls" ,NULL, NULL, SW_SHOWNORMAL);
Asi que comprueba que la ruta del excel y el power point y to eso es la correcta...pq tendria que funcionar!!!