ERROR shellexecut

Signaler
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Bonjour,



Voici mon problèle, je voudrai que mon programme affiche un message
d'erreur si il n'arrive pas à éxécuter un fichier pour tel ou tel
raisons (fichier introuvable,...) et afficher la description de
l'erreur avec la fonction strerror(errno). Mais voila cela ne marche
pas. J'ai testé en entrant des nom de fichier n'existant pas, mais
voila il ne m'affiche rien. Et executé les fichier correct comme si de
rien n'était .



Je sais que shellexecute renvoie le handle du fichier exécuté si tout a
été et un numéro d'erreur (errno) si cela na pas fonctionner.Mais bon
voila je trouve pas pourquoi cela ne fonctionne pas.



Voici mon code:



if(!(ShellExecute(NULL,"open",D_cExePath,0,0,D_iShow))){


printf("erreur : %s",strerror(errno));


getch();

}

8 réponses

Messages postés
706
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2013

bah j'ai pas testé mais sur msdn y a ca

0, The operating system is out of memory or resources., ----
ERROR_FILE_NOT_FOUND, The specified file was not found., ----
ERROR_PATH_NOT_FOUND, The specified path was not found., ----
ERROR_BAD_FORMAT, The .exe file is invalid (non-Microsoft Win32 .exe or error in .exe image)., ----
SE_ERR_ACCESSDENIED, The operating system denied access to the specified file., ----
SE_ERR_ASSOCINCOMPLETE, The file name association is incomplete or invalid., ----
SE_ERR_DDEBUSY, The Dynamic Data Exchange (DDE) transaction could not be completed because other DDE transactions were being processed., ----
SE_ERR_DDEFAIL, The DDE transaction failed., ----
SE_ERR_DDETIMEOUT, The DDE transaction could not be completed because the request timed out., ----
SE_ERR_DLLNOTFOUND, The specified dynamic-link library (DLL) was not found., ----
SE_ERR_FNF, The specified file was not found., ----
SE_ERR_NOASSOC, There
is no application associated with the given file name extension. This
error will also be returned if you attempt to print a file that is not
printable., ----
SE_ERR_OOM, There was not enough memory to complete the operation., ----
SE_ERR_PNF, The specified path was not found., ----
SE_ERR_SHARE, A sharing violation occurred.

pour ton cas ca serait plutot ERROR_FILE_NOT_FOUND
Messages postés
780
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
16 avril 2009
1
Salut,

HINSTANCE nerror;
nerror=ShellExecute(NULL, "open", TON_PATH, NULL, NULL, SW_SHOWNORMAL);
if(reinterpret_cast(nerror) <= 32) // alors erreur
{
printf("erreur : %s\n\n",strerror(reinterpret_cast(nerror)));
}

Ciao
Urgo
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Regarde ce que t'a mis Urgo, le nom de sa variable est causant. ShellExecute ne retourne absolument rien d'autre qu'un statut d'erreur mais jamais un handle.
Si retour <= 32 c'est raté et basta.
Tu peux donc mettre en + court:
if(32 > (long) ShellExecute(...)) ERRATUM;

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Tu a raison BruNews je vien d'aller voir sur la msdn, shellexecute ne
renvoi pas de handle. Il ferait bien de corriger ça chez Borland. Parce
que eux c'est ce qu'ils mettent. Je le mettrait tantot en rentrant pour
vous prouvez ma bonne fois lol de lol



Au fait reinterpret_cast, what qu'est ce que c'est? lol je connai le cast, mais je n'ai jamais vu ceci.



merci pour votre aide.



++ALL
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Oups désolé je retire ce que j'ai dit. L'aide de borland dit "hinstance handle" c'est moi qui ai mal traduit. Autant pour moi désolé.



++All
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Mais ma question sur reinterpret_cast tien toujours :D



Qu'est ce reinterpret_cast?
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Ce qu'on pourrait appeler une fioriture de langage.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Donc c'est pas un bon truc lol ok