| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Dom 23 Oct, 2016 11:39 am Asunto: Problema shellExecute cuando no hay aplicacion "ejecuto |
|
|
Buenas..
Mi problema es que al ejecutar un fichero pdf de la forma...
| Código: |
ShellExecute(NULL,"open","miArchivo.pdf",0,0,SW_SHOWDEFAULT); |
Si no existe ninguna aplicacion que ejecute archivos pdf, el programa se bloquea y muestra la ventama "cpu" del IDE de c++ builder 6 (ningun mensaje de error) ...
Si existe no hay problema la ejecuta...
Podria solucionarlo si pudiera comprobar antes del ShellExecute si en el pc hay alguna aplicacion que ejecute PDF... pero no se hacerlo..
Alguna Idea...
Gracias |
|
| Volver arriba |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Dom 23 Oct, 2016 6:00 pm Asunto: |
|
|
| Código: |
int nRet= (int) ShellExecute(NULL,"open","miArchivo.pdf",0,0,SW_SHOWDEFAULT);
if ( nRet <= 32 ) {
DWORD dw= GetLastError();
char szMsg[250];
FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM,
0, dw, 0,
szMsg, sizeof(szMsg),
NULL
);
ShowMessage(szMsg);
return;
}
|
|
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Dom 23 Oct, 2016 9:26 pm Asunto: |
|
|
Pues no logro reproducir tu error, al tratar de abrir un archivo sin aplicación asociada, Windows me pide que busque una...
Saludos. |
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Lun 24 Oct, 2016 8:22 am Asunto: |
|
|
Gracias a los dos por contestar.....
probare el codigo de felip y a escafandra le pondre un pantallazo del "error" ...
Gracias otra vez |
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Lun 24 Oct, 2016 3:20 pm Asunto: |
|
|
Buenas...
He probado el codigo de Felip y me sigue dando el mismo problema, ya que el conflicto surge al ejecutar la instruccion Shell
Envio Pantallazo de la ventana que se me abre en el ide de c6++ sobre windows XP
[img]
https://s22.postimg.org/b2xtx7n2p/Interrupcion.jpg[/img]
y el codigo es
| Código: | AnsiString PathApp = ExtractFilePath(Aplication->Exename);
AnsiString PatFich = PathApp+"Inf\\Manual.pdf";
ShellExecute(NULL,"open",PatFich.c_str(),0,0,SW_SHOWDEFAULT); |
No veo cual es el problema (solo como idea...no tengo apenas espacio en el disco duro (104MB)... ¿puede haber algun problema con la memoria virtual?)
Como solucion se podria accediendo al registro de windows saber si hay alguna aplicacion que ejecute archivos pdf :
Garcias |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Lun 24 Oct, 2016 11:20 pm Asunto: |
|
|
| Código: |
AnsiString PathApp = ExtractFilePath(Application->ExeName);
AnsiString PatFich = PathApp+"Inf\\p.ttx";
ShellExecute(NULL,"open",PatFich.c_str(),0,0,SW_SHOWDEFAULT);
|
Un archivo desconocido ttx...
Win10 me pide que busque una aplicación para abrirlo. Algo hay en ese PC tuyo que provoca tu error.
Saludos. |
|
| Volver arriba |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Mie 26 Oct, 2016 7:06 am Asunto: |
|
|
Gracias por contestar...
Al fina solucionado (o eso creo).. al conocer que en el registro HKEY_CLASSES_ROOT se asignan las extensiones que abren aplicaciones instaladas en en s.o , opto por comprobar si existe la extension pdf (gracias felip) y si existe ejecuto el archivo y si no mando un mensaje "no existe aplicacion necesaria".
Respecto al "error" que se producia... debido a una mala desinstalacion en mi pc, sin tener el programa que ejecute archivos pdf si exis la key .pdf en el registro, al eliminarla dejo de saltar la ventana cpu al intentar ejecutar el archivo, simplemente no hace nada.
Gracias Otra vez. |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Vie 04 Nov, 2016 11:06 pm Asunto: |
|
|
De todas formas, si puedes no dejes el Handle como nulo, eso puede dar errores en ocasiones.
Saludos. |
|
| Volver arriba |
|
 |
|