begin process at 2012 05 29 22:50:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

System

 > 

Lancer une dll par un exe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Lancer une dll par un exe

mercredi 2 mars 2011 à 19:30:30 | Lancer une dll par un exe

ArthurAuguste

Membre Club
Question qui doit paraître évidente pour un non débutant:
J’ai écrit une dll qui fonctionne et que je lance actuellement sans problème par :

rundll32.exe Mydll,Entrypoint

Maintenant je voudrais la lancer avec un .exe que je suis en train d’écrire.
J’ai regardé la doc de l’API32 et j’ai compris qu’il fallait faire la séquence 1 à 4 ci-dessous :

HINSTANCE hinstdll;
MYPROC dllEntryAdd;
BOOL liberation;

1.- hinstdll = LoadLibrary(TEXT("Mydll.dll"));
2.- dllEntryAdd = (MYPROC) GetProcAddress(hinstdll, "Entrypoint");
3.- ???????
4.- liberation = FreeLibrary(hinstdll);

Par contre je ne vois pas quelle instruction du langage C ou C++ il faut mettre en 3 pour lancer l’exécution à l’adresse dllEntryAdd ? (Désolé si ça vous paraît trivial)

Merci pour votre réponse
mercredi 2 mars 2011 à 20:49:31 | Re : Lancer une dll par un exe

patatalo

Membre Club Administrateur CodeS-SourceS
salut,


Ta DLL (Dynamically Loadable & Linkable) n'est pas un executable. Une Dll contient des fonctions ou données qu'elle exporte pour les partager à plusieurs executables. Elle permet de partager le code qui n'a plus a être dupliqué fréquement dans les executables.

Ton executable importe les fonctions par leur nom ou leur numero. GetProcAddress retournera l'adresse mémoire ou commence la fonction.

Pour l'appeler en C, il faut créer un type pointeur vers une fonction:

void (*pfct)(params,...);
pfct = GetProcAddress();
pfct(params,...);

Cours sur les pointeurs C/C++.

@++
jeudi 3 mars 2011 à 00:25:45 | Re : Lancer une dll par un exe

ArthurAuguste

Membre Club
Ok merci, mais entre-temps j'ai fait ceci ci-dessous et ça marche:

HINSTANCE hinstdll;
FARPROC dllEntryAdd;
BOOL liberation;

1.- hinstdll = LoadLibrary("Mydll.dll");
2.- dllEntryAdd = GetProcAddress(hinstdll, "Entrypoint");
3.- dllEntryAdd(); // exécution de la dll
4.- liberation = FreeLibrary(hinstdll);

Je crois qu'on fait en fait la même chose, sous l'API32 de windows FARPROC est un pointeur vers une fonction.
Je n'avais rien indiqué sur ma dll, mais ce que j'avais appelé Entrypoint ça n'était pas le point d'entrée de la Maindll, mais bien le point d'entrée d'une fonction dans la Maindll.
J'avais d'ailleurs signalé que ma dll fonctionnait déjà par l'appel suivant:
rundll32.exe Mydll,Entrypoint ce qui sous-entend bien que Entrypoint est le point d'entrée d'une fonction.

Merci


Cette discussion est classée dans : exe, lancer, dll, hinstdll, dllentryadd


Répondre à ce message

Sujets en rapport avec ce message

Un DLL qui lance un EXE .. aidez moi [ par belette321 ] Boujour,Voilla j'ai un  .EXE a lancer et la seul facons de le lancer pour pas qu'on ne puisse le contournez est de le lancer par un DLL mais voilla la DLL VC++ utilisée dans un EXE VB2008 [ par oliv72 ] Bonjour à tous,Je tente de faire un outil de monitoring en VB2008, au moyen d'une DLL écrite en C++. Problème : je ne connais ni VC++, ni VB2008, ShellExecute dans une DLL executer par Winlogon de la base de registre [ par guitoulefoux ] Bonjour,J'ai fais une DLL qui s'execute au Winlogon de mon OS (base de registre).Cette DLL doit normalement faire plusieurs tests et executer une autr Uttilisation la fonction d'une DLL [ par aDebhian ] Pour ce faire, j'ai lu msdn, codes-sources et j'en suis arrivé à ceci: [FONCTION DLL] extern "C" __declspec(dllexport) int tests(int test) {     retu récuperer un nom [ par babaslow ] Bonjour, Comment fait-on pour connaitre le nom du processus qui lance son exe (ou sa dll) ? Eexemple : ma dll s'appelle test.dll et toto.exe est l'e Problème de débogage avec visual C++ 2008 [ par wallie0703 ] Bonjour, J'ai passé je ne sais combien d'heures sur ce problème, donc si quelqu'un peut m'aider, ça serait très gentil ^^Voilà mon problème Quand je c Comment executer une EXE a partir d'un DLL ? [ par belette321 ] Boujour,Ma question est : "Comment executer une application qui est dans le meme fichier que la notre ?"J'ai essayer, "ShellExecute(0,"open", "ah.exe" importer une fonction d'un exe [ par Kian_ix ] salut je cherche un moyen d'importer une fonction a partir d'un fichier .exe comme on pourrait le faire a partir d'un fichier .dll, par exemple: PROC Lancer et arreter un EXE avec ShellExecuteEx [ par taggle ] Salut voici mon puissant code qui lance notepade2.exe[^^happy13] [code=cpp]#include #include #include #include using namespace std; int main(in Comment créer un exe pour lancer un msi(l'msi doit etre inclu dans l'exe) [ par ghanmi04_05 ] Bonjour, J'ai besoin d'un bout de code en cpp de préférence, pour générer un exe (setup.exe) qui lance un msi (pas comme le setup.exe de visual studio


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales