techno_man
Messages postés10Date d'inscriptiondimanche 11 janvier 2004StatutMembreDernière intervention17 juillet 2008
-
1 juil. 2008 à 19:29
techno_man
Messages postés10Date d'inscriptiondimanche 11 janvier 2004StatutMembreDernière intervention17 juillet 2008
-
2 juil. 2008 à 14:57
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 utilisateurs n'aient qu'un fichier à exécuter.
Donc, je voudrais que le deuxième programme soit chargé en ressource et qu'il soit exécuté si les verifications dans le premier programme sont OK.
Pour mettre ce système en place, je pense copier le second programme dans un dossier temporaire qui sera supprimé. Je pense ensuite faire un simple appel système pour exécuter ce programme.
Maintenant, je ne vois pas comment :
1/ charger le fichier ressource dans le premier programme
2/ copier le contenu dans un répertoire temporaire.
Pour info, j'utilise Dev-C++.
techno_man
Messages postés10Date d'inscriptiondimanche 11 janvier 2004StatutMembreDernière intervention17 juillet 2008 2 juil. 2008 à 14:57
Bon,
je me répond à moi même.
Il fallait déclarer
#define IDR_BIN 160
dans le resource.rc également... je ne l'avais mis que dans mon code CPP.
Pour ceux que ca interesse, voici un lien avec un exemple de code (que j'ai utilisé et qui marche).
BastienL21
Messages postés172Date d'inscriptiondimanche 10 décembre 2000StatutMembreDernière intervention12 février 20092 1 juil. 2008 à 20:37
Slt,
Si tu veux appeler un 2e exe tu peux faire (C) :
system("start C:\\MonDossier\\Monexe.exe");
pour copier :
system("copy C:\\DossierSource\\Fichiersource.exe C:\\DossierDestinataire");/*Il me semble qu'il y à un dossier temporaire dans C:\DOCUM~1\NomDeLutilisateurCourant\LocalS~1\Temp
Pour récupérer le Nom de l'util' courant :
char *Nom=(char*)malloc(256*sizeof(char));
LPDWORD ml=256;
GetUserName (Nom,&ml);*/
Sinon tu peux toujours supprimer ton exe toi-même :
system("DEL C:\\Dossier\\MonExe.exe");
Si tu as le CS du 2e exe, tu pourrais tout simplement faire un if( Verification == OK ){/*Code du 2e exe*/}, il n'y aurait ainsi qu'un exe.
Les system(); ne fonctionneront je pense que sous Win et je ne sais pas si ils fonctionneront sur autre qu'une console.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 1 juil. 2008 à 21:09
Sous windows:
CreateProcess lancera l'exécutable dans son propre thread. Ton programme principal ne "gèlera" pas.
On peut utiliser WaitForSingleObject pour arrêter le programme principal et attendre la fermeture de l'exécutable lancé.
techno_man
Messages postés10Date d'inscriptiondimanche 11 janvier 2004StatutMembreDernière intervention17 juillet 2008 2 juil. 2008 à 12:18
Bonjour,
merci de vos réponses.
juju12, je susi en train de mettre en place ce que tu as dis.
J'ai actuellement un problème avec FindResource, mais je n'en trouve pas la cause. (Erreur 1814)
HRSRC hResource = FindResource(NULL, MAKEINTRESOURCE(IDR_BIN), "BINARY");
if (hResource == NULL)
{
MessageBox(NULL, "Impossible de charger la ressource", "", 0);
EndDialog(hDlg,0);
return 1;
}