Powerbuilder下DDE通信的查询

Powerbuilder下DDE通信的查询,powerbuilder,dde,Powerbuilder,Dde,我有一个第三方工具,可以发送或接收DDE戳。我一直在使用DDE spy监视它与第三方DDE服务器模拟器之间的通信,以期使用Powerbuilder复制此功能。据我所知,这是使用温暖的链接。我尝试使用openchannel,然后是execremote,但是调用的类型被描述为“执行”。 同样,当客户端和仿真器启动时,它们会出现在已注册服务器的列表中,但我的应用程序不会/ 我考虑过使用user32.dll,但我知道大多数DDE调用都不能与Powerbuilder一起使用,因为PB不支持回调。 有人能告

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

您找到了答案吗?我不确定我是否完全理解你在做什么,但我认为你需要看看这些事情

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

DDE服务器窗口中以下事件的代码,用于根据您的需要接收、发送数据,所有这些都是:

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

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

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


我希望这有帮助

请澄清您希望PowerBuilder做什么。如果我必须从另一个只支持DDE的应用程序获取信息,我只会将DDE与PB结合使用。DDE是笨拙的,这就是为什么它被COM所取代。