DDE客户端应用程序向DDE服务器应用程序发布WM_DDE_EXECUTE消息,以将字符串发送到要处理的服务器作为一系列命令。服务器应用程序预计将发布WM_DDE_ACK消息作为响应。
WM_DDE_EXECUTE
wParam = (WPARAM) hwnd; //发布应用程序的句柄
lParam = (LPARAM) hCommands; //处理全局对象
参数
【HWND】
价值【wParam中】.标识发送消息的客户端窗口。
【hCommands】
价值【lParam的】.包含引用ANSI或Unicode命令字符串的全局内存对象,具体取决于会话中涉及的窗口类型。
备注
命令字符串是由一个或多个包含在单括号([ ])中的一个或多个【操作码】字符串组成的以null结尾的字符串。
每个【操作码】字符串具有以下语法,其中【参数】列表是可选的:
【操作码参数】
【操作码】是任何应用程序定义的单一令牌。它不能包括空格,逗号,括号,括号或引号。
【参数】列表可以包含任何应用程序定义的值或值。多个参数用逗号分隔,整个参数列表括在括号中。参数不能包括逗号或括号,除了引用的字符串内。如果一个括号或括号字符出现在带引号的字符串中,则不需要像旧规则那样加倍。
以下是一些有效的命令字符串:
[connect][download(query1,results.txt)][disconnect]
[query("sales per employee for each district")]
[open("sample.xlm")][run("r1c1")]
[quote_case("This is a "" character")]
[bracket_or_paren_case("()s or []应该没有问题。“)]
请注意,根据旧规则,括号和括号必须加倍,如下所示:
[bracket_or_paren_case("(())s or [[]]应该没有问题。“)]
服务器应该能够以任一形式解析命令。
只有当客户机和服务器窗口句柄都使IsWindowUnicode函数返回TRUE时,才能使用Unicode执行字符串。
发帖
客户端应用程序通过调用PostMessage函数而不是SendMessage函数发布WM_DDE_EXECUTE消息。
客户端应用程序通过使用GMEM_DDESHARE选项调用GlobalAlloc函数来分配【hCommands】.
当处理服务器回复WM_DDE_EXECUTE消息的WM_DDE_ACK消息时,客户端应用程序必须删除在WM_DDE_ACK消息中发回的【hCommands】对象。
接收
服务器应用程序发布WM_DDE_ACK消息以反应积极或反应。服务器应重新使用【hCommands】对象。
除非由子协议指定,否则服务器不应发布WM_DDE_ACK消息,直到执行命令字符串指定的所有操作完成为止。此规则的一个例外是当字符串导致服务器终止对话。
也可以看看
GlobalAlloc, IsWindowUnicode, PackDDElParam, PostMessage, ReuseDDElParam, SendMessage, UnpackDDElParam, WM_DDE_ACK