1

我有一个文件保存到我的桌面,当我用我的程序打开它时,工作目录更改为桌面,这意味着我的程序无法加载它需要的一些文件,因为它在工作目录中搜索这些文件。有没有办法阻止工作目录像这样改变?

4

5 回答 5

3

您可以设置一个标志来避免当前目录更改称为 OFN_NOCHANGEDIR

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

于 2011-05-12T12:17:13.397 回答
2

您可以在启动时保存工作目录并使用绝对路径。事实上,最好始终使用绝对路径打开文件,除非您真的想依赖当前工作目录。

于 2011-05-12T12:03:31.473 回答
2

您最好确定进程位置,然后将其用作在哪里找到其他文件的关键?启动程序的方式有很多种,这会影响工作目录。

请参阅:此处的答案以很好地描述如何获取进程位置并删除可执行文件名(查看评论)

本质上,您使用: GetModuleFileNameGetModuleFileNameEx.

然后: PathRemoveFileSpec删除文件名

于 2011-05-12T12:06:59.850 回答
2

打开文件不会更改您的当前目录。也许您使用通用的打开文件对话框? 这是一篇文章,将解释所有有关如何更改当前目录的文章。

于 2011-05-12T12:17:20.340 回答
1

用来SetCurrentDirectory做那件事。您可以使用GetModuleFileName

TCHAR szFileName[MAX_PATH];

GetModuleFileName( NULL, szFileName, MAX_PATH )

... then compute the correct directory
SetCurrentDirectory(path);
于 2011-05-12T12:03:14.980 回答