在服务器应用程序中执行命令

【勇芳软件工作室】汉化HomePreviousNext

基于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消息。