2011-02-25 67 views
2

我可以获得一些代码示例以将DDE用作服务器吗?我知道如何使用客户端部分,但无法将我的应用设置为充当服务器并接收数据。如何使用DDE服务器

回答

2

看看您的Delphi安装中名为DDEDemo的文件夹。这是一个Delphi使用的DDE项目(我不是100%确定它仍然包含在内,但看一看)。演示包括一个DDE客户端和服务器。

编辑 - 对于某些示例代码,请尝试使用link

+0

不包括了,至少不能用XE看到 – hikari 2011-02-26 13:44:45

+0

哇..那是D1! (也许也是D2,但不是D3)。你有相当的记忆力。与D2007编译,不知道他们是否按预期工作。 – 2011-02-26 16:38:09

+0

该演示仅涵盖客户端部分。 – hikari 2011-02-26 19:36:05

2

使用DDE服务器非常简单,您甚至不需要示例代码。你可以只是在Delphi的窗体设计器内设计时做到这一点:

要创建发出数据的服务器:

  1. 删除一个TDDEServerConv和 TDDEServerItem表单或数据 模块。
  2. 服务器项目连接到 服务器会话(使用对象检查器中设置 DDEServerItem1.ServerConv = DdeServerConv1 ,有 下拉列表中,但双击 就足够了)。
  3. 的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,但它不起作用)。

+0

嗨,不能让这个工作。我不知道如何在Excel中使用DDE,但我做了一个小客户端测试应用程序。例如,这适用于mIRC:http://pastebin.com/pqhLuZWN我可以成功地从mIRC中检索数据,例如昵称等。我尝试按照您告诉我的方式将其与服务器测试应用程序一起使用,但它从不显示任何内容备忘录。另外,如何在服务器中指定DDE服务名称? – hikari 2011-02-27 12:11:28

+0

如果您尝试了它并且无法正常工作,您可能会输入错误的服务器名称,主题名称或项目名称。这是唯一的三种合理的可能性。这不像你想象的那么难。你看到我上面说了什么?我的项目的服务器名称是Project1。会话名称是DdeServerConv1,而项目是DDeServerItem1。 – 2011-03-10 01:36:46