GetModuleFileName 与 GetCurrentDirectory 的重大区别

来源:互联网 发布:手机杂志软件哪个好 编辑:程序博客网 时间:2024/05/21 08:41

GetModuleFileName 与 GetCurrentDirectory 的区别很明显就是:

1. GetModuleFileName获得指定模块的详细路径, 包括了文件名和后缀名.

2. GetCurrentDirectory获得本进程的当前工作目录, 注意是工作目录, 不是文件所在目录.

例如: C:/A/test.exe
GetModuleFileName 返回 C:/A/test.exe
GetCurrentDirectory 开始是返回 C:/A/
但此时 test.exe 做了一个选择一个目录并某个保存文件的动作, 例如test.exe有一个功能是导出某些数据到文件的, 此时test.exe调用了文件选择对话框并保存了文件到 D:/B/a.txt中.
此时GetCurrentDirectory 返回的是D:/B/ 而不是C:/A/

如果在DLL中向获得DLL文件详细路径, 只要这样调用即可
 char chPath[MAX_PATH];
 ::GetModuleFileNameA(this->m_hInstance,chPath, MAX_PATH);
this->m_hInstance是DLL的句柄, 在exe中就是exe的句柄.

 

char chPath[MAX_PATH];
::GetModuleFileNameA(0, chPath, MAX_PATH);
*(::strrchr(chPath, '\\') + 1) = 0;
::strcat(chPath, "aaa.txt");