Inclure une application multimedia dans C++

chedly_ensi Messages postés 21 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 24 mars 2005 - 3 juil. 2004 à 11:16
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 18 août 2004 à 02:34
Bonjour,
je travaille sur un projet où je dois protéger les cd par une license.
En fait, je dois récupérer les caractéristiques de la machine( num du DD, carte mere...) du client et fournir un numéro de série pour que le cd ne fonctionne que sur cette machine.
l'application de protection et le programme à executer doivent etre dans le meme executable.
Pouvez-vous me donner une idée comment inclure une application externe (surtout multimédia: flash, php...) dans mon programme ecrit en C++.
Merci

34 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
30 juil. 2004 à 16:54
Salut,
Il faut d'abord s'assurer que la ressource est bien incluse dans le fichier exécutable. Pour cela, il suffit de remarquer la taille de ce fichier qui sera augmentée de celle de la ressource. Tu peux faire un nouveau projet vide "Win32 Application", auquel tu ajoutes ta ressource et juste le code pour la manipuler. Ainsi les choses seront plus claires. Tu peux te servir aussi de la fonction GetLastError() juste après FindResource() pour connaitre l'erreur générée.
A bientôt
0
chedly_ensi Messages postés 21 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 24 mars 2005
1 août 2004 à 10:44
salut,
j'ai essayé avec ton exemple, ça marche mais ce n'est pas une solution à mon probleme car là tu fais une copie de cp.exe dans c: puis vous le lancez, d'ailleurs si on laisse seulement la derniere ligne ca marchera. mais moi je veux que le client ne pourra jamais trouver l'executable (ici cp.exe) tout seul, ainsi il pourra le lancer sans passer par ma protection.
à bientot
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
1 août 2004 à 19:37
Salut,
Je te rappelle que la meilleure solution est d'inclure le code source de "cp.exe" dans ton projet. Ainsi, tu n'auras besoin ni de ressource ni d'appel à un fichier externe. J'ai choisi "c:" dans mon code juste pour simplifier l'exemple. Tu pourras dissimuler ton fichier "cp.exe" dans un dossier comme "c:\windows\system" ou "c:\winnt\system32". Vu le nombre impressionnant de fichiers que contiennent ces dossiers, il est peu probable qu'on puisse trouver le tien. D'ailleurs, ce fichier ne peut rester sur le disque dur qu'après un plantage de la machine ou de ton application avant qu'elle n'ait le temps de l'effacer. Puisque je ne connais rien sur ton fichier "cp.exe", il m'est difficile de trouver une meilleure solution pour ton problème.
A+
0
chedly_ensi Messages postés 21 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 24 mars 2005
1 août 2004 à 21:36
salut,
le fichier que je dois appeler n'est pas un programme écrit en C++, d'ailleurs je ne sais pas en quel langage il peut etre ecrit, ce que je connais est qu'il peut etre .exe ou .swf (animation flash), si je met le fichier dans n'importe quel repertoire, surement on trouvera une methode pour le prendre, ce que je veux c'est qu'il ne soit jamais present sur le disque dur, c'est pour cela que j'ai voulu le mettre dans le meme executable que le mien, maintenant il parait que je suis devant une impasse car j'ai cru que e peux lancer la ressource sans que je seais obligé de copier l'executable sur le disque dur.
je vais chercher encore.
A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chedly_ensi Messages postés 21 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 24 mars 2005
2 août 2004 à 21:39
salut,
une autre chose, sais tu comment transformer un resultat de type DWORD en CString, y a t il une fonction
pour le faire?
merci
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 août 2004 à 03:34
Salut,
Désolé, je ne connais pas grand-chose sur CString. Je suis sûr que beaucoup de membres ici peuvent t'aider. Il suffit de poster une nouvelle question dans ce forum sous un titre du genre "comment convertir un DWORD en CString?". Je pense que cela intéressera d'autres personnes aussi.
A+
0
chedly_ensi Messages postés 21 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 24 mars 2005
5 août 2004 à 00:22
salut,
tu n'as pas une idée pour l'autre probleme: comment lancer l'autre executable sans le rendre disponible sans protection?
j'ai vraiment besoin d'idées car je n'ai presque plus de temps.
à bientot
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
5 août 2004 à 03:18
salut,
Puisque je ne connais presque rien sur ton fichier exécutable, je ne vois pas comment je pourrais trouver une solution. Tout ce que je peux te dire pour l'instant, c'est que si ton programme est fait avec Flash Action Script, tu pourras inclure dans son code un appel à l'autre fichier exécutable qui se charge de la protection. Si la valeur retournée est bonne il continue, sinon il quitte. Si tu donnes d'autres précisions sur ton "cp.exe", on pourrait peut-être mieux t'aider.
A+
0
chedly_ensi Messages postés 21 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 24 mars 2005
5 août 2004 à 12:49
salut,
je ne dois pas donner des restrictions sur .exe ou le .swf que je veux lancer, donc je pense à utiliser ta premiére solution où je mets le fichier sur le disque dur comme ("c:\windows\system" ou "c:\winnt\system32") avec un autre nom, maintenant comment l'effacer aprés, avec fopen ("c:\\winnt\\system32\\cp.exe","w")? et si son execution est interrompue soudainement y a t il un moyen de l'effacer?
merci et à bientot
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
6 août 2004 à 18:12
Salut,
Moi j'utilise DeleteFile() comme ceci:
DeleteFile("c:\\winnt\\system32\\cp.exe");

Le risque que le fichier reste sur le disque dur existe toujours si le programme ou la machine plante avant qu'il ne soit effacé.
A+
0
chedly_ensi Messages postés 21 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 24 mars 2005
7 août 2004 à 00:04
salut,
j'ai essayé avec DeleteFile mais ça n'a pas marché, j'ai utilisé ton exemple:
HRSRC x x=FindResource(NULL,MAKEINTRESOURCE(IDR_RT_RCDATA1),"RT_RCDATA"); 
HGLOBAL h=LoadResource(NULL,x);
LPVOID memptr=LockResource(h);
DWORD taille=SizeofResource(NULL,x);
HANDLE hfichier;
hfichier=CreateFile("C:\\cp.exe",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD ecrits;
WriteFile(hfichier,memptr,taille,&ecrits,NULL);
CloseHandle(hfichier);
WinExec("C:\\cp.exe", SW_SHOW);


puis j'ai ajouté à la fin:
DeleteFile("c:\\winnt\\system32\\cp.exe");

il parait que quand je ferme cp.exe, la main ne revient pas à mon programme pour continuer sn execution.
tu as une idée?
je sais que je pose beaucoup de questions mais il ne me reste que 5 jours pour terminer.
merci d'avance
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
8 août 2004 à 04:32
Salut,
Dans ton exemple tu as crée le fichier "c:\\cp.exe" mais tu veux effacer le fichier "c:\\winnt\\system32\\cp.exe". Le chemin n'est pas le même. Il fallait écrire:
CreateFile("c:\\winnt\\system32\\cp.exe",.....);
//Tu peux utiliser la valeur de retour de DeleteFile:
BOOL ret;
ret=Deletefile("c:\\winnt\\system32\\cp.exe");
//si ret=0 appeler GetLastError()


Pour savoir comment rendre la main à ton programme,voici un lien:
http://www.wischik.com/lu/programmer/
Le fichier "shellex.zip" contient des exemples d'utilisation de ShellExecute() et CreateProcess(). Je n'ai pas le temps de le tester mais je pense que cela correspond à ce que tu cherches.
A+
0
chedly_ensi Messages postés 21 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 24 mars 2005
16 août 2004 à 09:51
salut,
c'est bon, j'ai fini avec ce propjet grâce à Dieu puis à toi, donc merci beaucoup.
et à bientot
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
18 août 2004 à 02:34
Salut,
Merci , je suis très content pour toi.
A la prochaine.
0
Rejoignez-nous