Comment GetModuleHandle travail dans Visual c++

Je suis novice en c++ et ce code renvoie toujours NULL même si je sais que le fichier existe:

HMODULE hModule = GetModuleHandle(TEXT("C:\\Users\\Steve\\Desktop\\stub.exe"));

Intéressant, si je copie stub.exe pour C:\Windows\system32 il trouve le module avec ce code:

HMODULE hModule = GetModuleHandle(TEXT("stub.exe"));

Ai-je raté quelque chose d'incroyablement de base?

notez que GetModuleHandle n'est pas une partie de C++, c'est une fonction API Win32. Vous pouvez l'appeler de toute autre langue qui prend en charge l'appel de l'OS directement l'API. Fixe des balises en conséquence.
Essayez d'appeler GetModuleFilename avec un hModule de 0; qui vous dira ce que Windows pense que le chemin d'accès à votre exécutable. Je soupçonne que c'est subtilement différent de la chaîne que vous êtes en passant d'une certaine façon.
Pourquoi avez-vous besoin de cette poignée de toute façon? Le cas le plus courant est avec GetProcAddress, mais c'est pour les Dll ne sont pas Exe.
Vous en avez besoin pour LoadImage, TaskDialogIndirect etc., et en général tout ce qui veut charger une ressource. Mais vous avez tout à fait raison que GetModuleHandle(NULL) est plus probable que l'OP veut ici.

OriginalL'auteur Steve Quezadas | 2011-07-18