次の方法で共有


DdeClientTransaction 関数 (ddeml.h)

クライアントとサーバーの間のデータ トランザクションを開始します。 この関数を呼び出すことができるのは Dynamic Data Exchange (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_EXECUTE または XTYP_POKE場合にのみ必要です。 それ以外の場合、このパラメーターは NULL である必要があります。

このパラメーターを省略可能に使用するには、pData がデータ ハンドルであるトランザクションXTYP_POKEwFmt パラメーターで指定されたのと同じデータ形式を使用して、DdeCreateDataHandle 関数の以前の呼び出しによってハンドルが作成されている必要があります。

[in] cbData

型: DWORD

データが文字列の場合、pData パラメーターが指すデータの長さ (バイト単位)。 値 -1 は、 pData が送信されるデータを識別するデータ ハンドルであることを示します。

[in] hConv

種類: HCONV

トランザクションが実行される会話へのハンドル。

[in, optional] hszItem

種類: HSZ

トランザクション中にデータが交換されるデータ項目へのハンドル。 このハンドルは、 DdeCreateStringHandle 関数の以前の呼び出しによって作成されている必要があります。 wType パラメーターがXTYP_EXECUTE場合、このパラメーターは無視されます (0L に設定する必要があります)。

[in] wFmt

型: UINT

データ項目が送信または要求される標準のクリップボード形式。

wType パラメーターで指定されたトランザクションがデータを渡さないか、XTYP_EXECUTE場合、このパラメーターは 0 である必要があります。

wType パラメーターで指定されたトランザクションが非実行 DDE データ (XTYP_POKE、XTYP_ADVSTARTXTYP_ADVSTOPXTYP_REQUEST) を参照する場合wFmt 値は、定義済みの有効な (CF_) DDE 形式または有効な登録済みクリップボード形式である必要があります。

[in] wType

型: UINT

トランザクションの種類。 このパラメーターには、次の値のいずれかを指定できます。

意味
XTYP_ADVSTART
0x1030
アドバイズ ループを開始します。 会話内には、任意の数の個別のアドバイズ ループを存在させることができます。 アプリケーションは、 XTYP_ADVSTART トランザクションの種類と次の 1 つ以上のフラグを組み合わせることで、アドバイズ ループの種類を変更できます。
  • XTYPF_NODATA。 実際にデータを送信することなく、データの変更をクライアントに通知するようにサーバーに指示します。 このフラグは、通知を無視するか、変更されたデータをサーバーに要求するオプションをクライアントに提供します。
  • XTYPF_ACKREQ。 次のデータ項目を送信する前に、クライアントが前のデータ項目を受信したことをクライアントが確認するまで待機するようにサーバーに指示します。 このフラグにより、高速サーバーは、クライアントが処理できるよりも高速にデータを送信できなくなります。
XTYP_ADVSTOP
0x8040
アドバイズ ループを終了します。
XTYP_EXECUTE
0x4050
実行トランザクションを開始します。
XTYP_POKE
0x4090
poke トランザクションを開始します。
XTYP_REQUEST
0x20B0
要求トランザクションを開始します。

[in] dwTimeout

型: DWORD

クライアントが同期トランザクションでサーバー アプリケーションからの応答を待機する最大時間 (ミリ秒単位)。 このパラメーターは、非同期トランザクションに 対してTIMEOUT_ASYNC する必要があります。

[out, optional] pdwResult

型: LPDWORD

トランザクションの結果を受け取る変数へのポインター。 結果をチェックしないアプリケーションでは、この値に NULL を使用できます。 同期トランザクションの場合、この変数の下位ワードには、トランザクションに起因する適用可能なDDE_フラグが含まれます。 これにより、DDE_APPSTATUS ビットに依存するアプリケーション サポートが提供されます。 ただし、今後のバージョンの 動的データ交換管理ライブラリ (DDEML) ではサポートされない可能性があるため、アプリケーションではこれらのビットを使用しないことをお勧めします。 非同期トランザクションの場合、この変数には 、DdeAbandonTransaction 関数と XTYP_XACT_COMPLETE トランザクションで使用するための一意のトランザクション識別子が入力されます。

戻り値

種類: HDDEDATA

関数が成功した場合、戻り値は、クライアントがサーバーからのデータを予期する、正常な同期トランザクションのデータを識別するデータ ハンドルです。 成功した非同期トランザクションの場合、およびクライアントがデータを予期しない同期トランザクションの場合、戻り値は 0 以外です。 失敗したすべてのトランザクションの戻り値は 0 です。

DdeGetLastError 関数を使用してエラー コードを取得できます。エラー コードは、次のいずれかの値になります。

注釈

アプリケーションが DdeClientTransaction によって返されるデータ ハンドルの使用を完了すると、アプリケーションは DdeFreeDataHandle 関数を呼び出してハンドルを解放する必要があります。

トランザクションは同期または非同期にすることができます。 同期トランザクション中、 DdeClientTransaction は、トランザクションが正常に完了するか失敗するまで戻りません。 同期トランザクションにより、クライアントはさまざまな非同期イベントを待機している間にモーダル ループに入ります。 このため、クライアント アプリケーションは同期トランザクションを待機している間もユーザー入力に応答できますが、アプリケーションは、最初の に関連付けられたアクティビティのため、2 番目の同期トランザクションを開始できません。 同じタスクのインスタンスに同期トランザクションが既に進行中の場合、DdeClientTransaction は失敗します。

非同期トランザクション中、 DdeClientTransaction はトランザクションの開始後にを返し、参照用のトランザクション識別子を渡します。 サーバーの DDE コールバック関数が非同期トランザクションの処理を完了すると、システムは XTYP_XACT_COMPLETE トランザクションをクライアントに送信します。 このトランザクションは、 DdeClientTransaction を呼び出すことによって開始された非同期トランザクションの結果をクライアントに提供します。 クライアント アプリケーションは、 DdeAbandonTransaction 関数を呼び出すことによって、非同期トランザクションを破棄することを選択できます。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ddeml.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll

関連項目

概念

DdeAbandonTransaction

DdeAccessData

DdeConnect

DdeConnectList

DdeCreateDataHandle

DdeCreateStringHandle

DdeFreeDataHandle

動的データ交換管理ライブラリ

リファレンス

XTYP_ADVSTART

XTYP_ADVSTOP

XTYP_EXECUTE

XTYP_POKE

XTYP_REQUEST