【问题标题】:How to find in a DLL which process loaded it?如何在 DLL 中找到哪个进程加载了它?
【发布时间】:2013-11-25 20:54:19
【问题描述】:

我正在改进一个 DLL 模块,它充当 Windows 应用程序的一种插件。

此插件与单个软件系列的各种版本兼容。 现在,对于某些功能,我必须访问父软件的配置文件。由于不同版本的软件在不同的地方有这些,我必须找出哪个版本加载了DLL。 通过进程可执行文件名称(即 abc_v1.exe、abc_v2.exe、abc_v3.exe)很容易区分不同的版本。

有没有办法获取加载 DLL 的进程的名称?我将 C++ 与一些基本的 WinAPI 命令一起使用,但不是 ATL、MFC 等。

目前我正在使用它自己的 SDK 功能轮询父软件,但这需要打开连接。根据配置文件的内容,DLL不需要打开连接,所以在建立通信之前我想知道是哪个版本加载的。

【问题讨论】:

    标签: c++ winapi dll


    【解决方案1】:

    调用GetModuleFileName 传递NULL 作为模块句柄。来自documentation

    正在请求其路径的已加载模块的句柄。如果该参数为NULL,GetModuleFileName获取当前进程的可执行文件路径。

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 2010-10-20
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      相关资源
      最近更新 更多