共用方式為


DdeClientTransaction 函式 (ddeml.h)

開始客戶端與伺服器之間的數據交易。 只有動態數據交換 (DDE) 用戶端應用程式可以呼叫此函式,而且應用程式只能在與伺服器建立交談之後使用。

語法

HDDEDATA DdeClientTransaction(
  [in, optional]  LPBYTE  pData,
  [in]            DWORD   cbData,
  [in]            HCONV   hConv,
  [in, optional]  HSZ     hszItem,
  [in]            UINT    wFmt,
  [in]            UINT    wType,
  [in]            DWORD   dwTimeout,
  [out, optional] LPDWORD pdwResult
);

參數

[in, optional] pData

類型: LPBYTE

用戶端必須傳遞至伺服器的數據開頭。

或者,應用程式可以指定要傳遞至伺服器的 HDDEDATA (數據處理) ,在此情況下, cbData 參數應設定為 -1。 只有在 wType 參數 XTYP_EXECUTEXTYP_POKE時,才需要此參數。 否則,此參數應該是 NULL

針對此參數的選擇性用法, XTYP_POKEpData 是數據處理端的交易,句柄必須由 先前呼叫 DdeCreateDataHandle 函式所建立,並採用 wFmt 參數中指定的相同數據格式。

[in] cbData

類型: DWORD

pData 參數所指向之數據的長度,以位元組為單位,如果數據是字串,則包括終止 NULL。 值 -1 表示 pData 是識別所傳送數據的數據處理句柄。

[in] hConv

類型: HCONV

要在其中進行交易之交談的句柄。

[in, optional] hszItem

類型: HSZ

交易期間要交換數據之數據項的句柄。 此句柄必須由 先前呼叫 DdeCreateStringHandle 函式所建立。 此參數會忽略 (,如果 wType 參數XTYP_EXECUTE,則應該設定為 0L )

[in] wFmt

類型: UINT

要提交或要求數據項的標準剪貼簿格式。

如果 wType 參數指定的交易未傳遞數據或 XTYP_EXECUTE,則此參數應該是零。

如果 wType 參數指定的交易參考非執行 DDE 數據 ( XTYP_POKEXTYP_ADVSTARTXTYP_ADVSTOP、XTYP_REQUEST) 則 wFmt 值必須是有效的預先定義 (CF_) DDE 格式或有效的已註冊剪貼簿格式。

[in] wType

類型: UINT

交易類型。 此參數可以是下列其中一個值。

意義
XTYP_ADVSTART
0x1030
開始建議迴圈。 交談中可以存在任意數目的相異建議迴圈。 應用程式可以藉由將 XTYP_ADVSTART 交易類型與下列一或多個旗標結合,來改變建議迴圈類型:
  • XTYPF_NODATA。 指示伺服器通知用戶端任何數據變更,而不需要實際傳送數據。 此旗標會提供用戶端忽略通知或要求伺服器變更數據的選項。
  • XTYPF_ACKREQ。 指示伺服器等到客戶端確認它收到前一個數據項,再傳送下一個數據項。 此旗標可防止快速伺服器比用戶端可以處理的數據更快傳送數據。
XTYP_ADVSTOP
0x8040
結束建議迴圈。
XTYP_EXECUTE
0x4050
開始執行交易。
XTYP_POKE
0x4090
開始擷取交易。
XTYP_REQUEST
0x20B0
開始要求交易。

[in] dwTimeout

類型: DWORD

用戶端在同步交易中等候伺服器應用程式回應的最大時間量,以毫秒為單位。 這個參數應該 TIMEOUT_ASYNC 異步交易。

[out, optional] pdwResult

類型: LPDWORD

接收交易結果之變數的指標。 未檢查結果的應用程式可以針對此值使用 NULL 。 對於同步交易,此變數的低序字包含交易所產生的任何適用DDE_旗標。 這可支援相依於 DDE_APPSTATUS 位的應用程式。 不過,建議應用程式不再使用這些位,因為未來版本的 動態數據交換管理連結庫 (DDEML) 可能不支持這些位。 對於異步交易,此變數會填入唯一的交易標識符,以搭配 DdeAbandonTransaction 函式和 XTYP_XACT_COMPLETE 交易使用。

傳回值

類型: HDDEDATA

如果函式成功,則傳回值是一個數據句柄,可識別客戶端預期來自伺服器之數據的成功同步交易數據。 針對成功的異步交易,以及用戶端不預期數據的同步交易,傳回值為非零。 所有未成功交易的傳回值都是零。

DdeGetLastError 函式可用來取得錯誤碼,它可以是下列其中一個值:

備註

當應用程式使用 DdeClientTransaction 傳回的數據句柄完成時,應用程式應該呼叫 DdeFreeDataHandle 函式來釋放句柄。

交易可以是同步或異步的。 在同步交易期間, DdeClientTransaction 不會在交易成功完成或失敗之前傳回。 同步交易會導致用戶端在等候各種異步事件時進入強制回應迴圈。 因此,用戶端應用程式仍然可以在等候同步交易時回應使用者輸入,但應用程式因為與第一個交易相關聯的活動而無法開始第二個同步交易。 如果相同工作的任何實例已經進行同步交易,DdeClientTransaction 就會失敗。

在異步交易期間, DdeClientTransaction 會在交易開始之後傳回,並傳遞交易標識碼以供參考。 當伺服器的 DDE 回呼函式完成處理異步交易時,系統會將 XTYP_XACT_COMPLETE 交易傳送給用戶端。 此交易會提供用戶端呼叫 DdeClientTransaction 所起始的異步交易結果。 用戶端應用程式可以選擇藉由呼叫 DdeAbandonTransaction 函式來放棄異步交易。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 ddeml.h (包含 Windows.h)
程式庫 User32.lib
Dll User32.dll

另請參閱

概念

DdeAbandonTransaction

DdeAccessData

DdeConnect

DdeConnectList

DdeCreateDataHandle

DdeCreateStringHandle

DdeFreeDataHandle

動態數據交換管理連結庫

參考

XTYP_ADVSTART

XTYP_ADVSTOP

XTYP_EXECUTE

XTYP_POKE

XTYP_REQUEST