2014-01-30 19 views
1

我加载DLL使用此命令显示路径在一个MessageBox一个dll husing手柄

HINSTANCE DllEconovent = LoadLibrary(_T("Econovent.dll")); 

我想从该DLL从磁盘加载路径......在这种情况下,假

C:\TFS_FWG\Acon\Oem\bin\Econovent.20140130_3200\Econovent64\Econovent.dll 

而只是消息框

MessageBox(_T("No valid ProcAddress"), _T("Error"), MB_ICONINFORMATION); 

展示它是如何以最好的方式完成这件事?

回答

3

看看GetModuleFileName:此函数“检索包含指定模块的文件的标准路径”。

DWORD WINAPI GetModuleFileName(
    _In_opt_ HMODULE hModule, 
    _Out_  LPTSTR lpFilename, 
    _In_  DWORD nSize 
); 

应该拿在HINSTANCE对象,并给你回一个文件名。


一个简单的例子

int main() 
{ 
    HINSTANCE test = LoadLibrary("test.dll"); 
    char buffer[MAX_PATH]; 
    GetModuleFileName(test, buffer, MAX_PATH); 
    std::cout << buffer << std::endl; 
    return 0; 
} 

它适应MessageBox,只是删除符合std::cout并把

MessageBox(buffer, _T("Error"), MB_ICONINFORMATION); 
+0

请使用MAX_PATH,255是不是一个快乐的数量。 –

+0

@HansPassant听起来不错! –

相关问题