如何获取我自己的代码的模块句柄? [英] How to get my own code's module handle?

查看:130
本文介绍了如何获取我自己的代码的模块句柄?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


可能重复:

如何获取当前执行代码的HMODULE?

我试图在我自己的模块中找到一个资源。如果这个模块是可执行文件,那么这个很简单 - GetModuleHandle(NULL)返回main模块的句柄。

I'm trying to find a resource in my own module. If this module is an executable, that's trivial - GetModuleHandle(NULL) returns the handle of the "main" module.

然而,我的模块是由另一个可执行文件加载的DLL。所以 GetModuleHandle(NULL)将返回该可执行文件的模块句柄,这显然不是我想要的。

My module, however, is a DLL that is loaded by another executable. So GetModuleHandle(NULL) will return the module handle to that executable, which is obviously not what I want.

有没有办法确定包含当前运行代码的模块的模块句柄?在调用$ code> GetModuleHandle()中使用DLL的名称似乎是一个黑客(如果有问题的代码被移植到不同的DLL中,并不容易维护)。

Is there any way to determine the module handle of the module that contains the currently running code? Using the DLL's name in a call to GetModuleHandle() seems like a hack to me (and is not easily maintainable in case the code in question is transplanted into a different DLL).

推荐答案

将模块句柄存放在DllMain中,然后在实际需要时使用它。很多框架(例如,MFC)会自动执行。

Store the module handle away when it is given to you in DllMain and then use it later when you actually need it. A lot of frameworks (e.g., MFC) do this automatically.

这篇关于如何获取我自己的代码的模块句柄?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆