如何获取TPersistentClass来自的动态包?

时间:2019-03-15 10:23:21

标签: delphi delphi-2007 runtime-packages

我的应用程序是使用runtime packages构建的,并使用LoadPackage函数来加载它们。 然后,它使用GetClass函数来获取类类型。

var
  MyClass : TPersistentClass;
begin
  if(LoadPackage('.\PackageA.bpl') = 0) then
    raise Exception.Create('Error loading PackageA.bpl');
  if(LoadPackage('.\PackageB.bpl') = 0) then
    raise Exception.Create('Error loading PackageB.bpl');

  MyClass := GetClass('TMyClass');
end;

是否可以获取MyClass来源的软件包的名称?

1 个答案:

答案 0 :(得分:3)

使用RTL的FindClassHInstance()函数获取拥有GetClass()返回的类类型的已加载包的句柄。这与LoadPackage()返回的句柄相同。

您可以自己跟踪加载的包句柄,也可以将句柄传递给Win32 API GetModuleFileName()函数,以查询该句柄的包路径和文件名。