2

我有一个可以发送或接收 DDE 戳的第三方工具。我一直在使用 DDE spy 来监视它与第 3 方 DDE 服务器仿真器之间的通信,以期使用 Powerbuilder 来复制它。据我所知,这是使用暖链接。我尝试使用 openchannel,然后使用 execremote,但调用类型被描述为“执行”。同样,当客户端和模拟器启动时,它们出现在注册服务器列表中,但我的应用程序没有/我考虑使用 user32.dll,但我知道大多数 DDE 调用不适用于 Powerbuilder,因为PB 不支持回调。任何人都可以向我指出这方面的信息方向吗?.....经过更多的调整,我尝试打开一个热链接。单击应用程序上的“戳”按钮,我的 powerbuilder 触发了 hotlinkalarm 事件。我可以拿起源等,但没有数据。我还需要发回一条指令,但所有响应远程都会做的是发送真或假。我有一些来自 DDE 模拟器的 Delphi / Pascal 代码,但 DDE 调用看起来与 Powerbuilder 的调用完全不同。

4

1 回答 1

2

你找到答案了吗?我不确定我是否完全理解你在做什么,但这里有一些我认为你需要看的东西。

StartServerDDE函数将您的应用程序建立为 DDE 服务器,请注意,您必须打开一个窗口作为 DDE 对话的句柄,然后编写窗口事件(应用程序级事件不起作用)。这可能是您没有看到已注册服务器的原因。结束 DDE 服务器时使用 StopServerDDE。

DDE服务器窗口中以下事件的代码,以完成您需要的数据的接收,发送,都是:

RemoteExec事件(客户端已发送请求) 使用 GetCommandDDE 获取客户端发送的命令字符串 使用 GetCommandDDEOrigin 查看发送命令的客户端应用程序名称

RemoteSend事件(客户端已发送数据) 使用 GetDataDDE 从客户端应用程序获取数据(通过引用字符串) 使用 GetDataDDEOrigin 查看客户端应用程序发送了数据

RemoteRequest事件(客户端已请求数据) 使用 SetDataDDE 将数据发送到客户端 DDE 应用程序

我希望这有帮助。

于 2010-10-08T07:34:55.243 回答