begin process at 2012 02 11 20:40:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

Verifier que le programme executé est au bon endrois


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Verifier que le programme executé est au bon endrois

dimanche 14 août 2005 à 18:24:23 | Verifier que le programme executé est au bon endrois

XKaliBur

Membre Club
Voila le bout de code suivant :

/* Verification du bon fichier */
   char copy[500];

   char current_long_path[500];
   char current_short_path[500];
   char destination_path[] = "c:\\mon_fichier.exe";

   GetModuleFileName(NULL,
                 current_long_path,
                 500); /* le chemin complet */

   GetShortPathName(current_long_path,
                current_short_path,
                500); /* transforme le chemin complet en version short (98) */

   FILE *fichier = fopen ("c:\\mon_fichier.exe", "r"); /* essaye d'ouvrir le fichier */

   if (fichier == NULL)
   {
      /* fichier inexistant */

      /* creation de la command copy */
      strcpy(copy, "copy ");
      strcat(copy, current_short_path);
      strcat(copy, " ");
      strcat(copy, destination_path);
      /* fin creation copy */

      system(copy);
      system("cls");

      ShellExecute(hwnd,
               NULL,
               destination_path,
               NULL,
               NULL,
               SW_NORMAL);  /* exec du programme */


      return 0; /* fermeture de ce programme */
   }

   else
   {
      /* fichier existant */

      if(destination_path != current_long_path) { /* verifie que c'est bien le bon exe qui est en cours d'execution */

         ShellExecute(hwnd,
                NULL,
                destination_path,
                NULL,
                NULL,
                SW_NORMAL);  /* exec du programme */

         return 0; /* fermeture de ce programme */
      }
   }

Ce code permet de vérifier si l'exe existe bien à l'endroit indiqué, s'il existe pas il ce copie de lui même et ferme la mauvaise fenêtre pour relancer la bonne. Si il existe alors il vérifie si c'est bien cet exe qui est lancé et si non il ferme le mauvais pour lancer le bon.

Mais le problème c'est que la fenêtre s’ouvre et ce ferme a l'infini, j'ai beau chercher je trouve pas mon erreur.

La partie "/* fichier inexistant */" marche très bien lorsque je supprime la partie "/* fichier existant */" mais après ce n'est pas le cas.

Merci d'avance.
dimanche 14 août 2005 à 18:36:20 | Re : Verifier que le programme executé est au bon endrois

BruNews

Administrateur CodeS-SourceS
Pour vérifier c'est:
if(0 > (long)GetFileAttributes(szfile)) ABSENT

et évite de mélanger toutes sortes de code, tu commences en API alors tu vas au bout ainsi, faut être cohérent dans le code comme ailleurs.


ciao...
BruNews, MVP VC++
dimanche 14 août 2005 à 18:57:05 | Re : Verifier que le programme executé est au bon endrois

XKaliBur

Membre Club
Ce que tu viens de me donner c'est bien pour verifier si le fichier existe? si oui c'est pas vraiment ça mon problème, c'est plus ici :

else
   {
      /* fichier existant */

      if(destination_path != current_long_path) { /* verifie que c'est bien le bon exe qui est en cours d'execution */

         ShellExecute(hwnd,
                NULL,
                destination_path,
                NULL,
                NULL,
                SW_NORMAL);  /* exec du programme */

         return 0; /* fermeture de ce programme */
      }
   }


Même si la façon que j'utilise est beaucoup moins propre que la tienne ça marche pour vérifier que le fichier existe ou non. Mon problème c'est surtout lorsqu'il vérifie si le fichier exécuter est celui qui est dans c:\monfichier.exe.

A moins que j'ai mal compris ton poste. Et puis dernière petite question pourquoi le mélange cémal ?


dimanche 14 août 2005 à 19:27:27 | Re : Verifier que le programme executé est au bon endrois

Kaid

En C on compare pas des chaines de caractères avec les opérateurs == et != mais avec strcmp().

Kaid - kaid.fr.st
dimanche 14 août 2005 à 19:35:35 | Re : Verifier que le programme executé est au bon endrois

BruNews

Administrateur CodeS-SourceS
Parce qu'on voit plus de "bons à rien" que de "bon à tout", je ne dis pas que c'est toi mais c'est une devise qui a fait ses preuves dans le temps.

destination_path != current_long_path

ça le sera à tout coup différent, ce sont 2 adresses !!! différentes, on est pas chez VB ici pour faire ce "!=".

strcmp() comme dit par Kaid pour comparer.


ciao...
BruNews, MVP VC++
lundi 15 août 2005 à 03:31:40 | Re : Verifier que le programme executé est au bon endrois

magic_Nono

Membre Club
   char current_long_path[500];
   char current_short_path[500];
   char destination_path[] = "c:\\mon_fichier.exe";

 l'a tué, ça aurait été autre choses ça serait passé
(mais c'est au minimum du C++ ds ce cas)

sinon, pr continuer comme BN
y a des doués, bons à tout; des bons à rien
et même des
mauvais à tout.
[Pagnol - Fany:"Il n'est pas bon à rien, il est mauvais à tout..."]

___________________________________________________________
Magicalement
Nono


Cette discussion est classée dans : fichier, programme, path, current, copy


Répondre à ce message

Sujets en rapport avec ce message

GLUt | devc++ | cygwin [ par themioux ] Salut à tousJe n'arrive pas à comprendre... j'ai fais un programme avec emacs for windows (habitué à Linux à la fac ^^) sur un PC où Cygwin est instal Récupérer le nom d'un fichier à partir de son path [ par guiltyspark ] Bonjour à tous :)J'ai un soucis pour lire le nom d'un fichier à partir de son path. Je m'explique, je suis en train de faire un petit programme qui co Probleme ecriture dans un fichier texte [ par Jackyzgood ] Bonjour à tous !J'essaye de faire une petit programme qui me permettrais de découper facilement des sprites, pour cela, je crée dans un premier temps de C vers C++ ? [ par boualiasma ] Salut, J'ai crée mon programme C sous Windows avec Visaul Studio 2008. Lorsque j'ajoute un fichier alors je trouve un fichier c++. Mais, je mis par e [c]s'est possible un programme comme sa ? [ par CreateurDeBug ] Bonjour, s'est possible un programme qu'ont luit poserais des questions et il ouvrirais le contenue d'un fichier texte en rapport avec se qu'on à dema lire un fichier .dat comme input de programme c++ [ par I0o0I ] Hello, On me dit qu il est possible (en c++) qu un programme: nom01.cpp lise son input depuis un fichier nom02.dat... il suffit d inclure au début d c++: compiler un programme avec de nombreux fichier et dossier en un seul exe [ par roryaerugino ] Bonjour j'ai un programme contenant des dossiers et des fichiers. Je lance l'application par un .vbs Je souhaiterais compiler ce programme pour en fa [DOS]Question .bat [ par lakeeee ] Salut, Je voudrais créer un fichier .bat pour lancer un programme .exe qui s'exécute dans une fenêtre DOS. Mon programme se lance bien avec la comman [deplacé]exercices en programmation c [ par hamzinho03 ] Bonjour, je vous que vous m'aidez pour ce de programme en langage j'arrive pas a resoudre 1ere EXERCICE 4 - Écrire un programme qui affiche le contenu Inclusion de resources en C/C++ [ par techno_man ] Bonjour, Je travaille actuellement sur une application qui après quelques vérifications, doit executer ou non une autre.de telle manière que mes utili


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales