关于GetCurrentDirectory用在exe里个dll里得到的当前目录不同的问题
桌面有一个文件夹“xxx”,里面有“InspectQQLandDlg.dll”和“myQQConsole.exe”。其中在dll和exe文件里都用了GetCurrentDirectory函数来得到程序当前路径。但是奇怪的问题出现了。
我在InspectQQLandDlg.dll代码里面用GetCurrentDirectory得到当前程序的目录,得到的 是“C:\Users\Administrator\Desktop”而实际的应该是“C:\Users\Administrator\Desktop\xxx”也就是说我得到的比实际少了一个文件目录“xxx”;
在myQQConsole.exe代码里面用GetCurrentDirectory得到当前程序的目录,得到的是“C:\Users\Administrator\Desktop\xxx”,这个是正确的。
为什么同一个GetCurrentDirectory函数用在dll和exe里面得到的路径不一样呢?dll和exe都是在一个路径下的(文件夹“xxx”下面)
急求各位大神解答
[解决办法]
GetCurrentDirectory 获得的是当前进程的目录,如果是DLL中使用该函数,获得的应该是调用该DLL的进程的目录
[解决办法]
GetCurrentDirectory 获得的是当前进程的活动目录(资源管理器决定的),可以用SetCurrentDirectory 修改的。你要的那种目录应该用GetModuleFileName获取。
btw:楼上的头像很萌...
[解决办法]
如果你的exe和dll是处于同一个进程,禁止不可能发生上述的情况。
我也建议使用GetModuleFileName,这个函数是绝对可靠的。GetCurrentDirectory 得到的路径是随时可能被SetCurrentDirectory修改的。至于你说的得到的是记事本的路径,你需要在dllmain的参数里面,保存它的第一个参数为全局变量,然后调用GetModuleFileName的时候将这个变量作为第一个参数传入。
[解决办法]