如何在.NET Winform中嵌入win32 Delphi窗体

本文关键字:win32 Delphi 窗体 NET Winform | 更新日期: 2023-09-27 18:24:14

我们想从.NET打开一些Delphi(win32)窗体,并将Delphi窗体嵌入到.NET MDI窗体中。如果我们只是在Delphi DLL中调用导出的方法,那么嵌入表单是没有问题的,但是,我们通常会遇到快捷键和键盘事件的问题。我们认为这是因为不兼容的消息循环。然后,我们尝试执行一个应用程序。在Delphi DLL的导出过程中,在一个单独的.NET线程上运行,它第一次工作,但当我们多次尝试打开表单时失败。有人知道如何以我们想要的方式进行互操作吗:在.NET Winform中嵌入一个win32 Delphi窗体?

@所有:首先,感谢您的回复我们找到了解决问题的方法:我们将Delphi应用程序.Run移到启动窗口的导出过程中。

如何在.NET Winform中嵌入win32 Delphi窗体

如果您有源代码,可以尝试将其移植到生成.NET代码的Delphi Prism。尽管如此,如果你使用VCL,你将面临一场艰苦的战斗。Delphi2006有一个.NET实现的VCL,而Prism只是一个没有VCL适配器的.NET对象Pascal。

另一个可用的工具是Hydra,我个人没有使用过,但他们声称可以在.NET和"遗留"Delphi之间提供互操作。如果它像他们声称的那样工作,那么它可能是将旧的Delphi代码转换为.NET应用程序的最佳选择。

我可能会在一个单独的进程中运行Delphi应用程序,将Delphi窗口的父窗口设置为MDI容器(而不是默认的:桌面,由HWND0引用),并使用典型的进程间消息在进程之间封送任何必要的数据。

再说一遍,这本质上与将窗体公开为ActiveX对象相同。我只是喜欢采用谷歌Chrome的方法,将窗口/选项卡隔离到单独的过程中。