Звоните GetModuleFileName () использование 0 как дескриптор модуля.
Примечание: Вы можете также использовать argv [0] параметр к основному или называть GetCommandLine (), если нет никакого основного. Однако имейте в виду, что эти методы не обязательно дадут Вам полный путь к исполняемому файлу. Они отдадут ту же строку символов, которая использовалась для запуска программы. Вызов GetModuleFileName () будет всегда давать Вам полный путь & имя файла.
Ответ Ferruccio хорош. Вот некоторый пример кода:
TCHAR exepath[MAX_PATH+1];
if(0 == GetModuleFileName(0, exepath, MAX_PATH+1))
MessageBox(_T("Error!"));
MessageBox(exepath, _T("My executable name"));
Используйте argv
аргумент main
:
int main(int argc, char* argv[])
{
printf("%s\n", argv[0]); //argv[0] will contain the name of the app.
return 0;
}
Вы, возможно, должны просканировать строку для удаления информации о каталоге и/или расширений, но имя будет там.
Существует статический метод для блока, который получит его для Вас в.NET.
Assembly.GetEntryAssembly().FullName
Редактирование: Я не понял, что Вы хотели имя файла... можно также получить это путем вызова:
Assembly.GetEntryAssembly().CodeBase
, Который получит Вас полный путь к блоку (включая имя файла).