晚上好人!
我目前正在使用Firemonkey / FMX设计具有各种功能的桌面界面。其中一个功能是能够在“面板”中显示信息。此“面板”由title
和context
(tlabel
}和image
(timage
)组成。为希望与我的应用程序交互的每个“应用程序”创建一个面板。每个面板在使用调用创建它的过程时分配的变量创建时命名,该变量旨在允许其他开发人员轻松访问其面板,但存在可能被利用的风险,因此我可能会切换到{{1} }。
我已经编写了基于变量创建其中一个面板的代码,以及基于嵌套迭代bindingname
和.children
对标签和图像级别进行类型转换的代码循环,我可以使用此方法自由更改标签或图像的文本(使用FindComponent
)(即代码可以工作)。但是,由于我想向其他应用程序和开发人员打开此功能,以便在其中一个“面板”中实际显示信息,我需要使用共享内存。
问题在于我真的无法理解它。我读过的所有内容都暗示使用SharedMem很简单,但我根本无法理解它。即使是XE2中包含的样本中的简单示例也让我感到困惑。遗憾的是,我完全不了解IPC,尽管多次尝试掌握它。我可以使用inifiles,但我不觉得他们需要灵活性。我考虑过.loadfromfile
,但与SharedMem一样,我也不明白这一点,更不用说它在Delphi中泄漏了。
基本上,我正在寻找一个函数/过程,我首先创建共享内存区域。我当时正在寻找一个函数来读取该sharedmemory中的字符串并输出GlobalAtomTable
以供我通过其他过程或函数访问。由于我想让我的其他项目与这个项目兼容,我还希望获得一个过程/函数,以便从单独的应用程序中将值写入共享内存。
正如我所说,我不懂IPC或SharedMem,我真的需要一个基本的起点,我可以从中自己工作和自学,直到更高级。关于我希望学习的内容的逐步演练将非常感激。我想要学习这一点,而不仅仅是获得一块代码,因为我现在应该使用IPC了。
答案 0 :(得分:4)
看看Cromis IMC or IPC components。
IMC用于使用tcp(indy)进行机器间通信,IPC用于使用名为pipes的窗口进行进程间通信。
两者都使用相同的客户端/服务器消息系统(基于数据包),因此您无需通过Windows文档来实现您的应用程序。
只需按照上面链接中的示例操作即可立即运行您的应用程序。顺便说一句,作者Iztok Kacin
是SO成员。