首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从DLL访问VCL表单

从DLL访问VCL表单
EN

Stack Overflow用户
提问于 2013-04-22 18:49:49
回答 1查看 839关注 0票数 0

我有两个进程A和B。进程A是一个包含表单TMainForm的VCL表单应用程序。进程B是一个DLL,我想从它远程控制此窗体。类似于(在进程B中)的东西:

代码语言:javascript
复制
MainForm := TMainForm.Create (nil);
MainForm.Handle := FindWindow ('TMainForm', 'MainForm Title');  // does not compile

// These two lines should remote-control the form in process A
MainForm.Edit1.Text := 'Test';
MainForm.Button1.Click;

如果以及如何实现这一点,你有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-22 18:53:31

如果您确实有两个独立的进程,那么您需要进程间通信(IPC)。例如,您可以使进程A成为进程外的COM服务器,该服务器由进程B以Office自动化的方式使用。这是许多选项之一,但它们都需要IPC。

但是,这听起来有点像您在同一进程中有一个可执行文件和一个DLL。在这种情况下,您有两个独立的VCL实例。这意味着您不能在两个模块之间传递TForm对象,或者任何其他的VCL对象。实际上,您不能在这两个模块之间传递任何类,因为您不能在模块之间共享类。模块A中的TObject与模块B中的TObject不同。

您的主要选项包括:

  1. 使用包而不是DLL。
  2. 使用接口进行互操作,因为这些接口可以在两个模块之间安全地传递。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16145264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档