lokalizacja aplikacji na dysku

0

Robię aplikację w winapi i chciałbym napisać funkcję, która zwracałaby lokalizację mojego programu. Czy istnieje taka funkcja? Najlepiej by było gdyby nie potrzebowała innej biblioteki niż winapi

2

Tutaj masz przykłąd kodu zaczerpniętego z tej strony https://msdn.microsoft.com/en-us/ms647232.aspx

#include <windows.h>
#include <stdio.h>
#include <shellapi.h>

int __cdecl main()
{
   LPWSTR *szArglist;
   int nArgs;
   int i;

   szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
   if( NULL == szArglist )
   {
      wprintf(L"CommandLineToArgvW failed\n");
      return 0;
   }
   else for( i=0; i<nArgs; i++) printf("%d: %ws\n", i, szArglist[i]);

// Free memory allocated for CommandLineToArgvW arguments.

   LocalFree(szArglist);

   return(1);
} 
2

Te kombinacje z parsowaniem linii komend są błędnym rozwiązaniem i nie wiem kto i dlaczego daje łapki w górę dla tego.

Dlaczego to błędne rozwiązanie? Proponuję kompilację i uruchomienie takiej aplikacji z linii komend w folderze aplikacji, nie zostanie zwrócona ścieżka, a jedynie komenda wydana do uruchomienia aplikacji.

Poprawne rozwiązanie to banalne:

GetModuleHandle(NULL) + GetModuleFileName()

1 użytkowników online, w tym zalogowanych: 0, gości: 1