c++ - 如何在一个DLL中找到哪个进程加载了它?

标签 c++ winapi dll

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

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

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

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

最佳答案

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

A handle to the loaded module whose path is being requested. If this parameter is NULL, GetModuleFileName retrieves the path of the executable file of the current process.

关于c++ - 如何在一个DLL中找到哪个进程加载了它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20203097/

相关文章:

C++ 屏幕截图 - 如何读取位图?

c++ - 如何为每个 XML 节点添加换行符?

c++ - 在 gcc 中将二维数组初始化为 0 时的值不正确

javascript - Unity C# 如何正确加载托管 DLL?

c# - 从 C++ 调用 C++ DLL 可以,但不能从 C# 调用

c++ - 数组的特定元素

delphi - Winmm.dll无法播放某些WAV声音吗?

windows - GetVersion/GetVersionEx 已弃用,如何获取 Win8.1 操作系统版本?

Windows API功能的.NET包装器

c# - 仅包含接口(interface)的 WinRT 组件 DLL?