打开带有某个程序的文件会更改该程序的工作目录



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

您可以

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

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

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

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

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

本质上,您使用: GetModuleFileNameGetModuleFileNameEx .

然后: PathRemoveFileSpec删除文件名

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

使用SetCurrentDirectory来执行此操作。您可以使用GetModuleFileName找到可执行文件

TCHAR szFileName[MAX_PATH];
GetModuleFileName( NULL, szFileName, MAX_PATH )
... then compute the correct directory
SetCurrentDirectory(path);

相关内容

  • 没有找到相关文章

最新更新