GetModuleFileName 与 GetCurrentDirectory 的重大区别

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");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值