web-dev-qa-db-fra.com

Comment puis-je obtenir le nom du fichier exécutable de l'instance actuelle à partir de l'application Win32 C++ native?

Duplicate possible:
Comment obtenir le nom de l'exécutable de l'application sous Windows (C++ Win32 ou C++/CLI)?

Comment obtenir le nom de fichier et le chemin de l'instance actuelle à partir de mon application Win32 C++ native?

Par exemple; si mon application était c:\projects\testapps\getapppath.exe, il serait capable de dire que le chemin est c:\projects\testapps\getapppath.exe

17
John MacIntyre

Vous pouvez le faire via la fonction GetModuleFileName .

TCHAR szFileName[MAX_PATH + 1];

GetModuleFileName(NULL, szFileName, MAX_PATH + 1)
33
Garett

GetCurrentProcess , puis QueryFullProcessImageName

Les autres réponses sont meilleures pour votre propre processus - ceci est préférable pour les réponses distantes. Par les docs :

Pour récupérer le nom de module du processus en cours, utilisez la fonction GetModuleFileName avec un descripteur de module NULL. Cela est plus efficace que d'appeler la fonction GetProcessImageFileName avec un descripteur du processus en cours.

Pour récupérer le nom du module exécutable principal d'un processus distant au format de chemin d'accès win32, utilisez la fonction QueryFullProcessImageName.

3
Steve Townsend
3
Thanatos

UPDATE: Ne fonctionne que pour les applications console!

Le chemin du programme est passé en tant que premier argument. Il est stocké dans argv[0] dans la fonction main(argc, argv[]).

1
Ed.C

Testé:

int _tmain(int argc, _TCHAR *argv[])
{
    _tprintf(L"%s", argv[0]);
    return 0;
}

Imprime le chemin complet.

0
egrunin