在MessageBox中使用句柄显示dll的路径

时间:2014-01-30 14:56:34

标签: c++ windows dll

我用这个命令加载一个dll

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

这是如何以最好的方式完成的?

1 个答案:

答案 0 :(得分: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);