Как извлечь ресурс из BPL? - PullRequest
4 голосов
/ 21 марта 2011

Если у меня есть ресурс в EXE и я хочу его извлечь, это довольно просто. Что-то вроде:

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

Это работает, потому что глобальная переменная HInstance является дескриптором EXE. Есть ли подобный способ для кода в BPL получить дескриптор пакета, частью которого он является, чтобы я мог извлечь из него ресурс?

1 Ответ

7 голосов
/ 21 марта 2011

HInstance фактически находится в модуле SysInit, который уникален для каждого PE (package, exe, dll).Система, где основная часть функций RTL и вспомогательных функций компилятора распределяется между пакетами, если используется пакет rtl.

Итак, код, который вы показали выше, должен нормально работать внутри пакета.MainInstance - это, вероятно, то, что вы думаете как дескриптор загрузки exe (или даже DLL в некоторых случаях).

...