khaliloenit
Messages postés34Date d'inscriptionsamedi 6 octobre 2007StatutMembreDernière intervention27 octobre 2009
-
8 oct. 2009 à 16:31
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 2010
-
9 oct. 2009 à 18:32
Salut,
- Je suis en train d'exécuter une DLL GUI à partir de mon programme (. Exe)
- J'ai fait tout ce qui concerne l'exportation de fonction qui sera appelée à partir de l'extérieur de DLL, comme ceci
Dans la DLL:
extern "C" __declspec (dllexport) void ExecuteDll (A_bDecryptCcs bool);
Ce dont j'ai besoin est de faire un programme (. Exe) pour exécuter cette DLL et il sera invisible car j'en ai besoin pour être comme un déclencheur;il suffit d'appeler et part pour laisser la DLL faire son travail à savoir l'interface graphique de la DLL.
J'espère que j'ai expliqué mon problème clairement, et j'espère donc que quelqu'un a une solution et aide-moi.
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 8 oct. 2009 à 20:43
Dans le projet :
extern "C" __declspec (dllimport) void ExecuteDll (A_bDecryptCcs bool);
puis utilisation comme une fonction normale.
Il faut aussi lier la lib (générée en même temps que la dll) au projet;
sous Visual C++ par exemple, ajouter quelque part :
#pragma comment(lib,"GUI.lib")
ou bien passer par le menu, options du projet...
Sinon, il y a un utilitaire de Windows qui sert exécuter les dlls; il s'agit de rundll32.
khaliloenit
Messages postés34Date d'inscriptionsamedi 6 octobre 2007StatutMembreDernière intervention27 octobre 2009 9 oct. 2009 à 12:44
;) je sais tout ca mon ami, mais ce que je demande c'est comment lancer un dll à partir d'un executable EXE puisque le DLL doit faire tout le travail (il contient la fenêtre principale et tous le traitement) et l EXE juste lancer ce DLL et disparaitre.
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 9 oct. 2009 à 18:32
fregolo a raison; ceci dit, tu peux contourner ce problème en chargeant ta dll dans l'espace mémoire d'un autre processus (genre explorer ou n'importe quoi); alors tu pourras quitter ton processus de lancement, mais du coup la dll continuera de tourner.
Pour ça, cf techniques d'injection de dll
Ceci marchera seulement sur une session avec autorisations maximales (du genre admin).