我可以得到一个小代码示例来使用 DDE 作为服务器吗?我知道如何使用客户端部分,但无法将我的应用程序设置为充当服务器并接收数据。
2 回答
在您的 Delphi 安装中查看名为 DDEDemo 的文件夹。这是 Delphi 用来附带的一个 DDE 项目(我不是 100% 确定它仍然包含在内,但请看一看)。该演示包括一个 DDE 客户端和服务器。
编辑 - 试试这个链接以获得一些示例代码。
使用 DDE 服务器非常简单,您甚至不需要示例代码。您可以在 Delphi 表单设计器中的设计时执行此操作:
创建一个发送数据的服务器:
- 将 TDDEServerConv 和 TDDEServerItem 拖放到表单或数据模块上。
- 将服务器项连接到服务器会话(使用对象检查器设置 DDEServerItem1.ServerConv=DdeServerConv1,有一个下拉列表,但双击它就足够了)。
- 将 DDEServerItem.Text 值设置为某个有效的文本值(即“A”)
要接收数据,您可能需要由 DDE 客户端执行的宏,这些宏将数据传递到服务器。为此,您使用 DdeServerConv.OnExecuteMacro 事件。尝试将参数 Msg:TStrings 转储到这样的备忘录中:
Memo1.Lines.Assign(Msg);
现在保存并运行您的项目。
要在 excel 中测试它,请输入:
=Project1|DdeServerConv1!DdeServerItem1
excel dde 客户端语法部分是应用程序名称后跟竖线、对话名称、后跟感叹号、然后是项目名称。
您将在 Excel 中看到值(A,或您放入项目的 Text 属性中的任何内容)。
这是一个工作的单项 DDE 服务器,无需您编写任何代码。
我通常发现我在运行时创建对话和项目,而不是在设计时,在对我更有用的真实场景中。
对于较旧的(非 unicode)Delphi 版本,还有一个名为 Django 的全功能商业产品,它对 DDE 工作有很大帮助。
我想您也可能正在寻找有关如何在 delphi 端编写“DDE Poke”命令处理程序的信息。我没有演示。我试过了,很明显的事情对我来说不太合适(你服务器上的项目有一个 OnPoke 事件,我写了一个简单的客户端,称为 PokeData,但它不起作用)。