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_POKE、wFmt パラメーターで指定されたのと同じデータ形式を使用して、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_ADVSTART、XTYP_ADVSTOP、XTYP_REQUEST) を参照する場合、wFmt 値は、定義済みの有効な (CF_) DDE 形式または有効な登録済みクリップボード形式である必要があります。
[in] wType
型: UINT
トランザクションの種類。 このパラメーターには、次の値のいずれかを指定できます。
値 | 意味 |
---|---|
|
アドバイズ ループを開始します。 会話内には、任意の数の個別のアドバイズ ループを存在させることができます。 アプリケーションは、 XTYP_ADVSTART トランザクションの種類と次の 1 つ以上のフラグを組み合わせることで、アドバイズ ループの種類を変更できます。
|
|
アドバイズ ループを終了します。 |
|
実行トランザクションを開始します。 |
|
poke トランザクションを開始します。 |
|
要求トランザクションを開始します。 |
[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 |
関連項目
概念
リファレンス