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

标签 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来源的程序包的名称?

最佳答案

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

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

关于delphi - 如何获取TPersistentClass来自的动态包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55180431/

相关文章:

delphi - 如何在delphi中使用teechart从数据集中制作堆积条形图

delphi - 获取给定 DLL、EXE 或 BPL 所需的 BPL 列表

delphi - StrToDate 不使用我的 FormatSetting

delphi - GetFileVersionInfoSize 和 GetFileVersionInfo 不返回任何内容

delphi - 在主机应用程序和 DLL 之间传递包含方法的记录

delphi - 如何声明一个常量Tpoint?

delphi - 为什么这段代码只运行了两次

email - 使用具有多个抄送的 Indy 发送电子邮件。如果不正确则没有人收到邮件

delphi - 专门评估多个 boolean 条件,只有一个可以为真(Delphi)