Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как узнать текущий каталог процесса в MFC?

311
15 октября 2008 года
plastictown
309 / / 08.01.2006
Каким образом можно узнать директорию, из которой запущена моя программа?
255
16 октября 2008 года
Dart Bobr
1.4K / / 09.04.2004
Это просто невозможно. Люди годами ищут решение данной проблемы, и, увы, так и не нашли. Это, я б сказал, второй по актуальности вопрос в программировании после создания программы, которая б смогла пройти тест Тьюринга.
288
16 октября 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: plastictown
Каким образом можно узнать директорию, из которой запущена моя программа?



_getcwd
GetCurrentDirectory

342
16 октября 2008 года
Yos
209 / / 21.06.2003
GetCurrentDirectory - возвращает текущую установленную директорию, причем она часто отличается от директории запуска.

Я применяю следующий метод (пока не подводил)
 
Код:
//****
 CHAR   command[MAX_PATH_SIZE];

 // формируем полную командную строку
 wsprintf(command,"%s",GetCommandLine());
 GetSequenceString(command,1,"\"",command);
 SeparatePath(command,CurrentPathName,CurrentProcessName);


Как это работает:

1. Самым первым в строке идет полный путь запуска в " независимо от текущего установленного пути ("c:\test\example.exe")
2. Выделяю как раз то что находится внутри " (моя процедурина GetSequenceString)
3. Делю на путь и само имя файла (моя процедурина SeparatePath)

PS Для сервисов NT путь запуска получается через анализ параметров возвращаемых SCManager'ом для сервиса, далее пункт 3.
288
16 октября 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: Yos
GetCurrentDirectory - возвращает текущую установленную директорию, причем она часто отличается от директории запуска.



Ну да. Хотя заголовок темы

Цитата:

Как узнать текущий каталог процесса в MFC?



Если же нужно именно

Цитата:

Каким образом можно узнать директорию, из которой запущена моя программа?



Тогда еще один вариант GetModuleFileName(GetModuleHandle(NULL), str, 1024);
Только еще необходимо будет отделить имя файла.

11
16 октября 2008 года
oxotnik333
2.9K / / 03.08.2007
 
Код:
char szModuleFilePath[MAX_PATH];
DWORD dwRes = ::GetModuleFileName(AfxGetInstanceHandle(), szModuleFilePath, MAX_PATH);
342
16 октября 2008 года
Yos
209 / / 21.06.2003
Вопрос, на мой взгляд в принципе задан не совсем корректно, так как можно понять следующее: Запуск допустим из командной строки или "ярлыком" а прога в другой директории и требуется узнать что - где лежит программа или тот путь который установлен при запуске из другой директории?

PS очень часто получается так что тема одна а вопрос в ней другой :)
288
16 октября 2008 года
nikitozz
1.2K / / 09.03.2007
Ждем от автора объяснений, что же он все таки хотел.
311
16 октября 2008 года
plastictown
309 / / 08.01.2006
Я хотел узнать именно "текущий каталог процесса "
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог