//****
CHAR command[MAX_PATH_SIZE];
// формируем полную командную строку
wsprintf(command,"%s",GetCommandLine());
GetSequenceString(command,1,"\"",command);
SeparatePath(command,CurrentPathName,CurrentProcessName);
Как узнать текущий каталог процесса в MFC?
Каким образом можно узнать директорию, из которой запущена моя программа?
Это просто невозможно. Люди годами ищут решение данной проблемы, и, увы, так и не нашли. Это, я б сказал, второй по актуальности вопрос в программировании после создания программы, которая б смогла пройти тест Тьюринга.
Цитата: plastictown
Каким образом можно узнать директорию, из которой запущена моя программа?
_getcwd
GetCurrentDirectory
Я применяю следующий метод (пока не подводил)
Код:
Как это работает:
1. Самым первым в строке идет полный путь запуска в " независимо от текущего установленного пути ("c:\test\example.exe")
2. Выделяю как раз то что находится внутри " (моя процедурина GetSequenceString)
3. Делю на путь и само имя файла (моя процедурина SeparatePath)
PS Для сервисов NT путь запуска получается через анализ параметров возвращаемых SCManager'ом для сервиса, далее пункт 3.
Цитата: Yos
GetCurrentDirectory - возвращает текущую установленную директорию, причем она часто отличается от директории запуска.
Ну да. Хотя заголовок темы
Цитата:
Как узнать текущий каталог процесса в MFC?
Если же нужно именно
Цитата:
Каким образом можно узнать директорию, из которой запущена моя программа?
Тогда еще один вариант GetModuleFileName(GetModuleHandle(NULL), str, 1024);
Только еще необходимо будет отделить имя файла.
Код:
char szModuleFilePath[MAX_PATH];
DWORD dwRes = ::GetModuleFileName(AfxGetInstanceHandle(), szModuleFilePath, MAX_PATH);
DWORD dwRes = ::GetModuleFileName(AfxGetInstanceHandle(), szModuleFilePath, MAX_PATH);
PS очень часто получается так что тема одна а вопрос в ней другой :)
Ждем от автора объяснений, что же он все таки хотел.
Я хотел узнать именно "текущий каталог процесса "