如何在DLL程序中得到DLL文件所在目录(不是调用者的文件夹目录)
如:
A.dll
在C:\Dll下
B.EXE调用A.Dll
我要在dll代码中得到C:\Dll
怎么办
好像是个很简单的问题
问题点数:0、回复次数:9Top
1 楼zfive5(醉马不肖)回复于 2003-06-01 19:08:48 得分 0
GetModuleFile(..)应该可以,我也记不清了,你可以查查msdnTop
2 楼papaya_stone(^_^)shentong(^_^)回复于 2003-06-01 19:17:07 得分 0
GetModuleFileName();
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved);
if (dwReason == DLL_PROCESS_ATTACH)
{
if (!AfxInitExtensionModule(ReadScrDLL, hInstance))
return 0;
TCHAR exeFullPath[MAX_PATH];
GetModuleFileName(g_hInst,exeFullPath,MAX_PATH);
AfxMessageBox(exeFullPath);
new CDynLinkLibrary(ReadScrDLL);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
// Terminate the library before destructors are called
AfxTermExtensionModule(ReadScrDLL);
}
return 1; // ok
}Top
3 楼papaya_stone(^_^)shentong(^_^)回复于 2003-06-01 19:18:18 得分 0
sorry:
TCHAR exeFullPath[MAX_PATH];
GetModuleFileName(hInstance,exeFullPath,MAX_PATH);
AfxMessageBox(exeFullPath);Top
4 楼progame(www.progame.org)回复于 2003-06-01 20:12:57 得分 0
g_hInst 是从哪来的?Top
5 楼papaya_stone(^_^)shentong(^_^)回复于 2003-06-02 00:08:43 得分 0
应该是hInstance,g_hInst是我自己加的一个全局变量,哈哈。Top
6 楼progame(www.progame.org)回复于 2003-06-02 09:26:40 得分 0
谢谢Top
7 楼sdf123321()回复于 2003-06-02 10:16:33 得分 0
在DLL中调用::GetCurrentDirectory(DWORD,nBufferLen,LPTSTR lpBuffer);Top
8 楼o_racle(璐璐)回复于 2003-06-02 10:31:10 得分 0
GetModuleFileName();
Top
9 楼huangbeyond(校园人渣)回复于 2003-06-02 10:52:03 得分 0
DLL当然可以得到当前路径!
HINSTANCE hDll = ::GetModuleHandle("xxxx.dll")//xxxxx.dll是你的DLL的文件名
char szPath[MAX_PATH];
::GetModuleFileName(hDll,szPath,MAX_PATH);
这样,szPath里的就是DLL的文件全路径。比如“c:\aaa\bbb\xxx.dll”,
再把“c:\aaa\bbb\xxx.dll”转化为“c:\aaa\bbb\”,我想就非常容易了Top




