如何从BPL中提取资源?

时间:2011-03-21 04:16:43

标签: delphi resources packages bpl

如果我在EXE中有一个资源而我想提取它,那就非常简单了。类似的东西:

stream := TResourceStream.Create(HInstance, ResourceName, RT_RCDATA);

这是有效的,因为全局变量HInstance是EXE的句柄。 BPL中的代码是否有类似的方式来获取它所属的包的句柄,这样我就可以从中提取资源了?

1 个答案:

答案 0 :(得分:7)

HInstance实际上在SysInit单元中,每个PE(package,exe,dll)都是唯一的。如果使用rtl包,则在包中共享大量编译器RTL和辅助函数的系统。

因此,您在上面显示的代码应该可以在包中正常工作。 MainInstance可能就是你想到的加载exe的句柄(在某些情况下甚至是DLL)。