gpt4 book ai didi

c++ - 如何获取卫星资源 DLL 的模块句柄? (C++ Visual Studio )

转载 作者:太空狗 更新时间:2023-10-29 20:18:04 30 4
gpt4 key购买 nike

我们已将所有字符串移动到 MFC 应用程序的资源(和附属 DLL)中。现在,主要语言已合并到 EXE 本身中,因此当我调用 LoadString() 时,我可以只传入 exe 的模块句柄。

但是,我需要使其通用化——如何以通用方式获取模块句柄并确保在适当的情况下从附属 DLL 加载字符串?我们需要为当前加载的资源 DLL 获取合适的模块。 (如果是英文,则为 exe)

::LoadString() 方法将一个句柄作为它的第一个参数——我们只是使用当前 exe 的句柄。

我是否必须确定是否需要加载 DLL,还是 Windows 会自动为我执行此操作。从我阅读的文档中不清楚。

This indicates that MFC does it automatically . 那么我如何获得该 hmodule?

最佳答案

在使用LoadLibrary 加载资源dll 后,存储它的HMODULE(由LoadLibrary 返回)并将其传递给LoadString 函数(以及其他资源函数)。

顺便说一下,如果您专门使用资源 DLL 来存储资源(即其中不包含任何代码),您可以使用带有 LOAD_LIBRARY_AS_DATAFILE 选项的 LoadLibraryEx 加载它们,使加载速度更快一些,并避免由于资源 dll 中嵌入的恶意代码而可能被利用(但在本例中为 be careful with dialogs)。

关于c++ - 如何获取卫星资源 DLL 的模块句柄? (C++ Visual Studio ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5340312/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com