基于Win32的应用程序可以使用WM_DDE_EXECUTE消息来导致在另一个应用程序中执行某个命令或一系列命令。为此,客户端向服务器发送一个包含句柄的WM_DDE_EXECUTE消息到命令字符串,如以下示例所示。
if (!(hCommand = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
sizeof(szCommandString)+ 1)))
return;
if (!(lpCommand = GlobalLock(hCommand))) {
GlobalFree(hCommand);
return;
}
lstrcpy(lpCommand, szCommandString);
GlobalUnlock(hCommand);
if(!PostMessage(hwndServerDDE,
WM_DDE_EXECUTE,
(WPARAM)hwndClientDDE,
PackDDElParam(WM_DDE_EXECUTE,0,(UINT)hCommand))){
GlobalFree(hCommand);
FreeDDElParam(WM_DDE_EXECUTE, lParam);
}
在这个例子中,服务器尝试执行指定的命令字符串。如果成功,则服务器向客户端发送肯定的WM_DDE_ACK消息;否则,它发送一个负WM_DDE_ACK消息。此WM_DDE_ACK消息重新使用原始WM_DDE_EXECUTE消息中传递的【hCommand】句柄。
如果客户端的命令执行字符串请求服务器终止,则服务器应通过发送一个正的WM_DDE_ACK消息进行响应,然后在终止前发布WM_DDE_TERMINATE消息。使用WM_DDE_EXECUTE消息发送的所有其他命令应同步执行;也就是说,服务器只有在成功完成命令后才发送WM_DDE_ACK消息。