|
Trouver une ressource
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)
Informations & options pour cette discussion
dimanche 14 août 2005 à 18:24:23 |
Verifier que le programme executé est au bon endrois

XKaliBur
|
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 souvre 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
|
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
|
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
|
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
|
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..."] ___________________________________________________________ MagicalementNono 
|
|
|
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
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

LG KP501
Entre 9€ et 159€
|