我有一个文件保存到我的桌面,当我用我的程序打开它时,工作目录会更改为桌面,这意味着我的程序无法加载它需要的某些文件,因为它在工作目录中搜索这些文件。有没有办法阻止工作目录像这样更改?
设置一个标志来避免当前目录更改称为OFN_NOCHANGEDIR
http://msdn.microsoft.com/en-us/library/ms646839(v=vs.85).aspx
您可以在启动时保存工作目录并使用绝对路径。事实上,最好始终打开具有绝对路径的文件,除非您真的想依赖当前工作目录。
您最好确定进程位置,然后将其用作在哪里查找其他文件的键?启动程序的方式有很多种,这些方法会影响工作目录。
请参阅:此处的答案很好地描述了如何获取进程位置并去除可执行文件名(查看注释)
本质上,您使用: GetModuleFileName
或GetModuleFileNameEx
.
然后: PathRemoveFileSpec
删除文件名
打开文件不会更改当前目录。 也许您使用通用的打开文件对话框? 这是一篇文章,将解释如何更改当前目录的所有内容。
使用SetCurrentDirectory
来执行此操作。您可以使用GetModuleFileName
找到可执行文件
TCHAR szFileName[MAX_PATH];
GetModuleFileName( NULL, szFileName, MAX_PATH )
... then compute the correct directory
SetCurrentDirectory(path);