Открытие файла с определенной программой изменяет, что программа работает каталог? - PullRequest
1 голос
/ 12 мая 2011

У меня есть файл, сохраненный на моем рабочем столе, когда я открываю его с моей программой, рабочий каталог меняется на рабочий стол, это означает, что моя программа не может загрузить некоторые файлы, в которых она нуждается, поскольку она ищет их в рабочем каталоге.Можно ли как-то помешать такому рабочему каталогу измениться?

Ответы [ 5 ]

3 голосов
/ 12 мая 2011

Есть флаг, который вы можете установить, чтобы избежать изменения текущего каталога, под названием OFN_NOCHANGEDIR

http://msdn.microsoft.com/en-us/library/ms646839(v=vs.85).aspx

2 голосов
/ 12 мая 2011

Открытие файла не меняет ваш текущий каталог.Возможно, вы используете общий диалог открытия файла? Вот статья, которая расскажет все о том, как это меняет ваш текущий каталог.

2 голосов
/ 12 мая 2011

Вы можете просто сохранить свой рабочий каталог при запуске и использовать абсолютные пути. На самом деле, лучше всегда открывать файлы с абсолютными путями, если только вы действительно не хотите полагаться на текущий рабочий каталог.

2 голосов
/ 12 мая 2011

Вам лучше определить местоположение процессов, чем использовать его в качестве ключа для поиска других файлов? Существует много способов запуска программ, которые влияют на рабочий каталог.

См .: Ответ здесь для хорошего описания того, как получить расположение процессов и вырезать исполняемое имя файла (смотрите в комментариях)

По сути, вы используете: GetModuleFileName или GetModuleFileNameEx.

и затем: PathRemoveFileSpec для удаления имени файла

1 голос
/ 12 мая 2011

используйте SetCurrentDirectory, чтобы сделать это. Вы можете найти исполняемый файл, используя GetModuleFileName

TCHAR szFileName[MAX_PATH];

GetModuleFileName( NULL, szFileName, MAX_PATH )

... then compute the correct directory
SetCurrentDirectory(path);
...