执行交易

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

客户端可以使用XTYP_EXECUTE事务来使服务器执行命令或一系列命令。

要执行服务器命令,客户端首先创建一个包含服务器执行的命令字符串的缓冲区,然后在调用DdeClientTransaction时将指针指向缓冲区或标识缓冲区的数据句柄。其他必需的参数包括会话句柄,项目名称字符串句柄,格式规范和XTYP_EXECUTE事务类型。创建用于传递执行数据的数据句柄的应用程序必须为DdeCreateDataHandle函数的【hszItem】参数指定NULL,对于【UFMT】参数必须指定为零。

DDEML将XTYP_EXECUTE事务传递到服务器的DDE回调函数,并指定标识命令字符串的格式名称,会话句柄,主题名称和数据句柄。如果服务器支持该命令,则应使用DdeAccessData函数获取指向命令字符串的指针,执行该命令,然后返回DDE_FACK。如果服务器不支持该命令或无法完成该事务,则应返回DDE_FNOTPROCESSED。如果服务器太忙而无法完成事务,则应返回DDE_FBUSY。

一般来说,服务器的回调函数应该处理XTYP_EXECUTE事务,然后返回以下异常:

1.当命令通过XTYP_EXECUTE事务请求服务器终止时,服务器不应终止,直到其回调函数从处理XTYP_EXECUTE返回。

2.如果服务器必须执行操作,例如处理可能导致DDEML递归问题的对话框或DDE事务,则服务器应返回CBR_BLOCK返回码以阻止执行事务,执行操作,然后恢复处理执行交易。

DdeClientTransaction返回时,客户端可以使用【lpdwResult】参数来访问事务状态标志。如果标志是DDE_FBUSY,则客户端应该稍后再次发送该事务。

如果服务器不支持XTYP_EXECUTE事务,则应在DdeInitialize函数中指定CBF_FAIL_EXECUTES过滤器标志。这样做可以防止DDEML将事务发送到服务器。