1

晚上好,伙计们!

我目前正在使用 Firemonkey/FMX 设计具有各种功能的桌面界面。这些功能之一是能够在“面板”内显示信息。这个“面板”由一个titlecontext(两者tlabel)和一个imagetimage)组成。为希望与我的应用程序交互的每个“应用程序”创建一个面板。每个面板都是在使用调用过程创建它时分配的变量创建时命名的,该变量旨在允许其他开发人员轻松访问他们的面板,但存在可能被利用的风险,因此我可能会切换到bindingname.

我已经编写了基于变量创建这些面板之一的代码,以及基于嵌套迭代.childrenFindComponent循环将类型转换为标签和图像级别的代码,并且我可以自由更改标签的文本或使用此方法的图像(带有.loadfromfile)(即代码有效)。但是,由于我想向其他应用程序和开发人员开放此功能以在这些“面板”之一中实际显示信息,因此我需要使用共享内存。

问题是我真的无法理解。我读过的所有内容都暗示使用 SharedMem 很容易,但我根本无法理解。即使是 XE2 包含的示例中的简单示例也让我感到困惑。不幸的是,尽管我多次尝试掌握它,但我根本不了解 IPC。我可以使用 inifile,但我觉得它们不需要灵活性。我考虑GlobalAtomTable过,但与 SharedMem 一样,我也不明白这一点,更不用说据报道它在 Delphi 中泄漏了。

本质上,我正在寻找一个函数/过程,我首先在其中创建共享内存区域。然后,我真的在寻找一个函数来从该共享内存中读取一个字符串并输出该字符串以result供我通过其他过程或函数访问。由于我想让我的其他项目与这个项目兼容,我还希望获得一个过程/函数来将值从单独的应用程序写入共享内存。

正如我所说,我不了解 IPC 或 SharedMem,我真的需要一个基本的起点,我可以从中工作和自学,直到更高级的水平。非常感谢我希望学习的逐步演练。我想学习这一点,而不是仅仅获得一堆代码,因为我现在应该使用 IPC 几乎是理所当然的。

4

1 回答 1

4

看看Cromis IMC 或 IPC 组件

IMC用于使用 tcp (indy) 进行机器间通信,而IPC用于使用 windows 命名管道进行进程间通信。

两者都使用相同的客户端/服务器消息系统(基于数据包),因此您不必详述 Windows 文档来实现您的应用程序。

只需按照上面链接中的示例进行操作,您的应用程序就会立即运行。顺便说一句,作者Iztok Kacin是 SO 成员。

于 2012-04-17T19:33:15.193 回答