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
0
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()