Resource depuis EXE ? [Résolu]

Signaler
Messages postés
36
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
11 juin 2005
-
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
-
Bonjour tlm.



Est-ce possible d'utiliser des resources d'un exe depuis un autre exe ?



Par exemple je voudrais pouvoir utiliser une dialogbox se trouvant dans un exe dans mon programme, possible ou pas ?



merci.

5 réponses

Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
voir ma source

http://www.cppfrance.com/code.aspx?ID=31942



Il suffit de chercger l'exe avec

LoadLibrary(avec un FreeLibrary à la fin hein:))

Si tu connais l'id de ton dialog tu fais

HRSRC hRsrc=FindResource(hExe,RT_DIALOG,MAKEINTRESOURCE(wDialogId));

HGLOBAL hGlobal=LoadResource(hExe,hRsrc);

LPVOID lpRes=LockResource(hGlobal);



si tu le connais pas, faut lister les resource(regarde ma source ou MSDN)

A m a u r y
Messages postés
36
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
11 juin 2005

LoadLibrary("test.exe")... j'étais loin...



Merci.



Et pour :



HRSRC hRsrc=FindResource(hExe,RT_DIALOG,MAKEINTRESOURCE(wDialogId));

HGLOBAL hGlobal=LoadResource(hExe,hRsrc);

LPVOID lpRes=LockResource(hGlobal);



J'ai pas compris ? A quoi ça sert ?
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
HRSRC hRsrc=FindResource(hExe,RT_DIALOG,MAKEINTRESOURCE(wDialogId));

permet de trouver la ressource dans l'exe:

RT_DIALOG: type prédéfini pour les dialog

wDialogId: l'id de la ressource



HGLOBAL hGlobal=LoadResource(hExe,hRsrc);

récupère un handle global de la ressource



LPVOID lpRes=LockResource(hGlobal);

récupère un pointeur sur les données



ensuite faut faire

DialogBoxIndirect(hInst,(LPCDLGTEMPLATE)lpRes,hwndParent,DialogProc);



si tu comprend toujours pas je posterais une source sur cppfrance . Sinon il y aussi MSDN .

A m a u r y
Messages postés
36
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
11 juin 2005

DialogBoxParam(hExe, (LPCTSTR)wDialogId, NULL, reinterpret_cast<DLGPROC>(&DialogProc), 0);



Ca fait la même chose en une seule ligne, non ?
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
oui en effet çà doit faire la même chose mais par contre:

reinterpret_cast<DLGPROC>(&DialogProc)

->pourquoi çà ???

il suffit de faire

DialogProc

normalement tu as pas besoin de cast puisque tu as une fonction qui est du bon type ou alors au pire

(DLGPROC)DialogProc

mais rien d'autre .

A m a u r y