如何获取我自己的代码的模块句柄

如何获取我自己的代码的模块句柄

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

问题描述

限时删除!!

我试图在我自己的模块中找到一个资源。如果这个模块是可执行文件,那么这个很简单 - 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.

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

1403页,肝出来的..

09-06 13:02