Salut,
En lisant la doc de LoadLibrary et GetModuleHandle, on trouve :
"Pointer to a null-terminated string that contains the name of the module
(either a .dll or .exe file)."
Je me demande en fait dans quel cas il peut s'agir d'un exe.
Je n'en vois que 2 :
- l'exe lui-même qui appelle GetModuleHandle
- un drôle d'exe qui exporte des fonctions, un genre de dll renommé en exe,
ou un truc bâtard comme ntoskrl.exe
Y'a-t-il d'autres cas, et quel en est l'utilité (le 2° cas aussi) ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Cyrille Szymanski
On 2004-04-29, Aurélien REGAT-BARREL wrote:
Salut, En lisant la doc de LoadLibrary et GetModuleHandle, on trouve : "Pointer to a null-terminated string that contains the name of the module (either a .dll or .exe file)." Je me demande en fait dans quel cas il peut s'agir d'un exe.
Il n'est pas toujours possible de rendre le HANDLE de l'EXE accessible à toutes les portions du code d'où l'utilité d'appeler GetModuleHandle(). Si tu crées une application console tu ne peux pas l'obtenir autrement.
Et un EXE peut tout aussi bien exporter des choses ou contenir des resources (des icônes par exemple, cf. explorer.exe).
-- cns
On 2004-04-29, Aurélien REGAT-BARREL <nospam-aregatba@yahoo.fr.invalid> wrote:
Salut,
En lisant la doc de LoadLibrary et GetModuleHandle, on trouve :
"Pointer to a null-terminated string that contains the name of the module
(either a .dll or .exe file)."
Je me demande en fait dans quel cas il peut s'agir d'un exe.
Il n'est pas toujours possible de rendre le HANDLE de l'EXE accessible
à toutes les portions du code d'où l'utilité d'appeler
GetModuleHandle(). Si tu crées une application console tu ne peux pas
l'obtenir autrement.
Et un EXE peut tout aussi bien exporter des choses ou contenir des
resources (des icônes par exemple, cf. explorer.exe).
Salut, En lisant la doc de LoadLibrary et GetModuleHandle, on trouve : "Pointer to a null-terminated string that contains the name of the module (either a .dll or .exe file)." Je me demande en fait dans quel cas il peut s'agir d'un exe.
Il n'est pas toujours possible de rendre le HANDLE de l'EXE accessible à toutes les portions du code d'où l'utilité d'appeler GetModuleHandle(). Si tu crées une application console tu ne peux pas l'obtenir autrement.
Et un EXE peut tout aussi bien exporter des choses ou contenir des resources (des icônes par exemple, cf. explorer.exe).
-- cns
Aurélien REGAT-BARREL
> Il n'est pas toujours possible de rendre le HANDLE de l'EXE accessible à toutes les portions du code d'où l'utilité d'appeler GetModuleHandle(). Si tu crées une application console tu ne peux pas l'obtenir autrement.
GetModuleHandle( NULL ); suffit non ?
Et un EXE peut tout aussi bien exporter des choses ou contenir des resources (des icônes par exemple, cf. explorer.exe).
Ha voilà. J'avais pas pensé à ça. On peut faire un LoadLibrary sur un exe pour lui piquer ses ressources. Merci.
-- Aurélien REGAT-BARREL
> Il n'est pas toujours possible de rendre le HANDLE de l'EXE accessible
à toutes les portions du code d'où l'utilité d'appeler
GetModuleHandle(). Si tu crées une application console tu ne peux pas
l'obtenir autrement.
GetModuleHandle( NULL ); suffit non ?
Et un EXE peut tout aussi bien exporter des choses ou contenir des
resources (des icônes par exemple, cf. explorer.exe).
Ha voilà. J'avais pas pensé à ça. On peut faire un LoadLibrary sur un exe
pour lui piquer ses ressources.
Merci.
> Il n'est pas toujours possible de rendre le HANDLE de l'EXE accessible à toutes les portions du code d'où l'utilité d'appeler GetModuleHandle(). Si tu crées une application console tu ne peux pas l'obtenir autrement.
GetModuleHandle( NULL ); suffit non ?
Et un EXE peut tout aussi bien exporter des choses ou contenir des resources (des icônes par exemple, cf. explorer.exe).
Ha voilà. J'avais pas pensé à ça. On peut faire un LoadLibrary sur un exe pour lui piquer ses ressources. Merci.
-- Aurélien REGAT-BARREL
Arnaud Debaene
Aurélien REGAT-BARREL wrote:
Il n'est pas toujours possible de rendre le HANDLE de l'EXE accessible à toutes les portions du code d'où l'utilité d'appeler GetModuleHandle(). Si tu crées une application console tu ne peux pas l'obtenir autrement.
GetModuleHandle( NULL ); suffit non ?
Et un EXE peut tout aussi bien exporter des choses ou contenir des resources (des icônes par exemple, cf. explorer.exe).
Ha voilà. J'avais pas pensé à ça. On peut faire un LoadLibrary sur un exe pour lui piquer ses ressources.
Qui plus est, il est possible en bidouillant d'exporter des fonctions depuis un .EXE. Je ne sais pas exactement *comment* c'est fait (toutes les docs de Microsoft semblent indiquer le contraire, parce qu'il n'y a pas de relocation au moment du chargement d'un exe), mais j'ai déjà vu des applis le faire (les vieilles versions de Matlab notamment).
Arnaud
Aurélien REGAT-BARREL wrote:
Il n'est pas toujours possible de rendre le HANDLE de l'EXE
accessible à toutes les portions du code d'où l'utilité d'appeler
GetModuleHandle(). Si tu crées une application console tu ne peux
pas l'obtenir autrement.
GetModuleHandle( NULL ); suffit non ?
Et un EXE peut tout aussi bien exporter des choses ou contenir des
resources (des icônes par exemple, cf. explorer.exe).
Ha voilà. J'avais pas pensé à ça. On peut faire un LoadLibrary sur un
exe pour lui piquer ses ressources.
Qui plus est, il est possible en bidouillant d'exporter des fonctions depuis
un .EXE. Je ne sais pas exactement *comment* c'est fait (toutes les docs de
Microsoft semblent indiquer le contraire, parce qu'il n'y a pas de
relocation au moment du chargement d'un exe), mais j'ai déjà vu des applis
le faire (les vieilles versions de Matlab notamment).
Il n'est pas toujours possible de rendre le HANDLE de l'EXE accessible à toutes les portions du code d'où l'utilité d'appeler GetModuleHandle(). Si tu crées une application console tu ne peux pas l'obtenir autrement.
GetModuleHandle( NULL ); suffit non ?
Et un EXE peut tout aussi bien exporter des choses ou contenir des resources (des icônes par exemple, cf. explorer.exe).
Ha voilà. J'avais pas pensé à ça. On peut faire un LoadLibrary sur un exe pour lui piquer ses ressources.
Qui plus est, il est possible en bidouillant d'exporter des fonctions depuis un .EXE. Je ne sais pas exactement *comment* c'est fait (toutes les docs de Microsoft semblent indiquer le contraire, parce qu'il n'y a pas de relocation au moment du chargement d'un exe), mais j'ai déjà vu des applis le faire (les vieilles versions de Matlab notamment).
Arnaud
Aurélien REGAT-BARREL
> Qui plus est, il est possible en bidouillant d'exporter des fonctions
depuis
un .EXE. Je ne sais pas exactement *comment* c'est fait (toutes les docs
de
Microsoft semblent indiquer le contraire, parce qu'il n'y a pas de relocation au moment du chargement d'un exe), mais j'ai déjà vu des applis le faire (les vieilles versions de Matlab notamment).
En effet, je viens de jeter un oeil à Mathlab 6.5, et c'est le cas. Comment c'est fait ? Je viens de tester :
#include <windows.h>
__declspec( dllexport ) int toto;
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { return 0; }
J'obtiens un exe, un .exp et un .lib. toto est bien exporté... Tant qu'on y est, il sert à quoi ce .exp ? C'est quoi la différence par rapport au .lib ?
-- Aurélien REGAT-BARREL
> Qui plus est, il est possible en bidouillant d'exporter des fonctions
depuis
un .EXE. Je ne sais pas exactement *comment* c'est fait (toutes les docs
de
Microsoft semblent indiquer le contraire, parce qu'il n'y a pas de
relocation au moment du chargement d'un exe), mais j'ai déjà vu des applis
le faire (les vieilles versions de Matlab notamment).
En effet, je viens de jeter un oeil à Mathlab 6.5, et c'est le cas.
Comment c'est fait ?
Je viens de tester :
#include <windows.h>
__declspec( dllexport ) int toto;
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
return 0;
}
J'obtiens un exe, un .exp et un .lib.
toto est bien exporté...
Tant qu'on y est, il sert à quoi ce .exp ? C'est quoi la différence par
rapport au .lib ?
> Qui plus est, il est possible en bidouillant d'exporter des fonctions
depuis
un .EXE. Je ne sais pas exactement *comment* c'est fait (toutes les docs
de
Microsoft semblent indiquer le contraire, parce qu'il n'y a pas de relocation au moment du chargement d'un exe), mais j'ai déjà vu des applis le faire (les vieilles versions de Matlab notamment).
En effet, je viens de jeter un oeil à Mathlab 6.5, et c'est le cas. Comment c'est fait ? Je viens de tester :
#include <windows.h>
__declspec( dllexport ) int toto;
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { return 0; }
J'obtiens un exe, un .exp et un .lib. toto est bien exporté... Tant qu'on y est, il sert à quoi ce .exp ? C'est quoi la différence par rapport au .lib ?
-- Aurélien REGAT-BARREL
Cyrille Szymanski
On 2004-04-30, Aurélien REGAT-BARREL wrote:
__declspec( dllexport ) int toto;
D'accord, mais le problème des "relocations" c'est surtout pour les exportations de fonctions.
-- cns
On 2004-04-30, Aurélien REGAT-BARREL <nospam-aregatba@yahoo.fr.invalid> wrote:
__declspec( dllexport ) int toto;
D'accord, mais le problème des "relocations" c'est surtout pour les
exportations de fonctions.