Delphi firemonkey进程间通信是否可能?

Delphi firemonkey进程间通信是否可能?,delphi,ipc,firemonkey,Delphi,Ipc,Firemonkey,我急切地寻找某种进程间通信,它必须与firemonkey一起工作 我正在将一些项目从Win32/64转换为firemonkey,我使用IPC在较小的应用程序和主应用程序之间进行通信,以交换数据 在Win-only版本中,我使用了cromis ipc,但它没有移植到firemonkey/osx,我只是找不到类似的东西 过程如下: “客户端”应用程序向“主应用程序”发送命令(字符串)。主应用程序解释此字符串并根据命令返回数据,也就是字符串 有人知道我是如何实现这一点的吗?从您的问题中可以看出,您还没

我急切地寻找某种进程间通信,它必须与firemonkey一起工作

我正在将一些项目从Win32/64转换为firemonkey,我使用IPC在较小的应用程序和主应用程序之间进行通信,以交换数据

在Win-only版本中,我使用了cromis ipc,但它没有移植到firemonkey/osx,我只是找不到类似的东西

过程如下:

“客户端”应用程序向“主应用程序”发送命令(字符串)。主应用程序解释此字符串并根据命令返回数据,也就是字符串


有人知道我是如何实现这一点的吗?

从您的问题中可以看出,您还没有接触到Delphi的DataSnap技术,这是实现您所希望的一种方法

看看您将在Delphi下找到的示例服务器+客户机

Samples\Object Pascal\DataSnap\BasicFireDAC

文件夹

您需要做的是编译并运行服务器,在服务器仍在运行的情况下编译并运行客户端。DataSnap不仅仅涉及数据库和数据集:如果您查看FireDAC文件夹中的服务器+客户端,您会发现 服务器的ServerMethodsUnit包含

TServerMethods = class(TDSServerModule)
  [...]
public
  { Public declarations }
  function EchoString(Value: string): string;
  function ReverseString(Value: string): string;
  function StreamGet: TStream;
  procedure StreamPost(AStream: TStream);
end;
您可以从FMX客户端调用这些方法-请参阅 客户端的ClientUnit,其中包含此代码

procedure TClientForm.Button1Click(Sender: TObject);
var
  AString: string;
begin
  AString := InputBox('Reverse String', 'Enter a String', '');
  if AString <> '' then
  begin
    FDStoredProcReverse.Params[0].Value := AString;
    FDStoredProcReverse.ExecProc;
    ShowMessage(FDStoredProcReverse.Params[1].AsWideString);
  end;
end;
procedure TClientForm.button1单击(发送方:TObject);
变量
绷带:弦;
开始
AString:=InputBox('反向字符串','输入字符串','');
如果使用“”则
开始
FDStoredProcReverse.Params[0]。值:=AString;
FDStoredProcReverse.ExecProc;
ShowMessage(FDStoredProcReverse.Params[1].AsWideString);
结束;
结束;
因此,它可以完全按照您在评论中所说的做,即从客户端向服务器发送一个字符串,并让服务器返回一个字符串。 DataSnap与FireMonkey和VCL配合使用,可以使用TCP或Http作为其传输

如果你谷歌

数据捕捉白皮书


第一个热门话题应该是关于Delphi 2009和2010中引入的“现代”DataSnap版本的白皮书。不幸的是,链接到Embarcadero的EDN服务器,但目前(英国)的链接似乎已关闭,因为周末经常出现这种情况。

FireMonkey是跨平台的,但IPC主要是特定于平台的。除非使用跨平台IPC库,否则唯一具有(或多或少)统一API的真正跨平台IPC解决方案是通过BSD套接字的TCP/UDP。其他特定于平台的选项包括管道、信号、邮件槽/邮箱、消息队列、共享内存等。可能是应用程序连接?我立即发现一个错误TDSServer not found或类似的错误。它看起来还需要某种数据库。这就是我想做的一切。我只想向主应用程序发送一个字符串,这会将一个字符串发回给我。肯定有一些简单的方法可以做到这一点,至少我希望如此(当然,您需要在尝试客户端时运行服务器-在新样式的DataSnap中,从客户端请求连接不会自动启动服务器,因为它使用D7样式的DCOM或ScktSrvr,Exe方式进行操作)。我无法打开FireDac示例,我得到了“未找到类TfDphysDsdDriverLink”在打开项目时。是否有任何多平台IPC组件可用,商用或免费?