Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Verifier que le programme executé est au bon endrois [ Archives / Fichier / Disque ] (XKaliBur)

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é 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 Débutante : Manipulation des fichier audio en c [ par winsoft ] salut ,je dois réaliser un programme en c qui permet l'apprentissage de l'alphabet francais,il consite à gérer les fichers audio en c, c-à-d une fois Traduction d'un programme C en algo [ par JesusQuintana ] Salut à tous. J'aurais voulu avoir une traduction en Pascal ou en Algorithme d'un programme fait en C. Voici le programme : void Sauvegarde (Adresse lire un fichier de parametre [ par gab55 ] Bonjours a tous Je suis débutant en c++ et je doit modifier un programme dejas existant.Je travaille sous embedded visual c++ 4 car mon programme est envoyer des fichier sur un réseau local [ par supergrey ] Salut, j'ai fait l'acquisition d'un modem routeur pour mes 2 PC mais le partage de fichiers de windows XP foire.J'ai vérifié que les PC ping bien et d Lecture d'un fichier ouvert par un autre programme. [ par OrsE ] Salut tout le monde, Voilà je chercher à ouvrir un fichir .doc alors que Word est l'utilise. Je sais que c'est possible parce que j'ai un logiciel du Lancement au démarrage 2 [ par ncoder ] Re-bonjour,C'est encore mon programme qui ouvre un fichier en se lançant.Si je lance mon programme manuellement, tout va bien.Si je demande à l'ordi d [MFC]Afficher correctement le contenu d'un fichier [ par BIG_BOSS_001 ] Bonjour à tous, J'ai un problème minime mais génant. Voici mon code : void CMFCDlg::OnBnClickedOpen() {     // TODO : ajoutez ici le code de votre g cryptage [ par progrima ] Bonjour tout le monde!!! On me demande de réaliser un programme qui peut crypter des fichier. Le problème c'est que ce programme doit pouvoir crypter


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,686 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.