0

好吧,实际上我知道我可以通过它的消息泵与窗口本身、平面 GUI 进行通信,但是假设我想在生成和维护该窗口的 Delphi DLL 中调用一个 COM 公开函数?我首先必须以某种方式确定拥有该窗口的模块。

与 Delphi 端的通信很少:您现在是托管的,您的主机 ID 是x,您可以关闭,您必须关闭等。其余时间我将把我的主机公开为一个 COM 对象,Delphi 代码可以更轻松地交谈至。

4

2 回答 2

1

如果您有 HWND,您可以使用它GetWindowLong/Ptr(GWL_HINSTANCE)来检索与窗口关联的模块。

另一种选择是让 DLL 在 ROT(运行对象表)中注册其 COM 对象,然后您可以在需要时简单地在 ROT 中查询 COM 对象。不需要 HWND。

于 2014-01-11T20:14:13.143 回答
0

由于这正在进行中,并且您有可用的窗口,您可以发送用户定义的消息来请求 COM 对象。然后你就准备好了。

于 2014-01-11T17:30:26.230 回答