人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

VC下動態數據交換技術

VC下動態數據交換技術

更新時間:2022-07-21 文章作者:未知 信息來源:網絡 閱讀次數:

  DDE客戶端的命令傳遞

  DDE除可在應用程序之間傳送信息之外,也允許從客戶向服務器傳送可執行命令?蛻艨赏ㄟ^向服務器郵寄WM_DDE_EXECUTE消息來為其傳遞命令。消息參數lParam的高字包含了命令字符串的全局共享內存塊句柄:

// 服務器數據項內容
CString sCommand = "COMMAND A";
// 分配DDEDATA格式化的全局共享內存塊
HGLOBAL hCommand = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, (LONG)sCommand.GetLength() + 1);
// 鎖定內存塊地址
LPSTR lpCommand = (LPSTR)GlobalLock(hCommand);
// 填充數據項內容
::strcpy(lpCommand, sCommand);
// 解鎖內存塊
GlobalUnlock(hCommand);
// 獲取當前窗口的安全句柄
HWND hwndClient = GetSafeHwnd();
// 組合消息參數lParam
LONG lDataPack = PackDDElParam(WM_DDE_EXECUTE, 0, (UINT)hCommand);
// 發出遠程命令消息
::PostMessage(m_hwndServer, WM_DDE_EXECUTE, (WPARAM)hwndClient, (LPARAM)lDataPack);
// 釋放內存
GlobalFree(hCommand);

  DDE服務器對遠程命令的執行

  按照DDE協議規定,服務器窗口在收到WM_DDE_EXECUTE消息后要對命令字符串進行分析,然后再執行之。服務器還要將根據指定命令串的執行結果向客戶返回WM_DDE_ACK應答消息。這里與前面的應答消息不同,在郵寄WM_DDE_ACK消息時要再次使用從WM_DDE_EXECUTE消息中傳遞過來的全局共享內存塊句柄。下面給出服務器窗口對WM_DDE_EXECUTE消息的響應代碼:

// lParam消息的低、高字
UINT uLo, uHi;
// 對消息參數lParam進行解包
UnpackDDElParam(WM_DDE_EXECUTE, lParam, &uLo, &uHi);
// 恢復出全局共享內存塊句炳
HGLOBAL hCommand = (HGLOBAL)uHi;
// 鎖定內存
LPSTR lpCommand = (LPSTR)GlobalLock(hCommand);
// 解鎖內存
GlobalUnlock(hCommand);
if (CString(lpCommand) == "COMMAND A")
{
 // 執行命令A的相關操作
 AfxMessageBox("命令A被執行");
 // 組合消息參數lParam
 LONG lDataPack = PackDDElParam(WM_DDE_ACK, 0x8000, (UINT)hCommand);
 // 發出遠程命令消息
 ::PostMessage((HWND)wParam, WM_DDE_ACK, (WPARAM)m_hwndServer, (LPARAM)lDataPack);
}
else
{
 // 組合消息參數lParam
 LONG lDataPack = PackDDElParam(WM_DDE_ACK, 0, (UINT)hCommand);
 // 發出遠程命令消息
 ::PostMessage((HWND)wParam, WM_DDE_ACK, (WPARAM)m_hwndServer, (LPARAM)lDataPack);
}
// 釋放內存
GlobalFree(hCommand);

  小結

  動態數據交換對遠程命令的執行比其在應用程序間傳送數據的應用更為重要,Windows操作系統及不少軟件均留有此類接口(作為DDE服務器),在應用程序中可以通過從DDE客戶端發出遠程命令而可以非常方便的執行外部軟件的相關命令和功能,比如可以命令Word新建一個文檔窗口等。本文所述代碼在Windows 2000 Professional下由Microsoft Visual C++ 6.0編譯通過。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 贵阳市| 闻喜县| 河源市| 堆龙德庆县| 清原| 夏邑县| 承德市| 靖江市| 福贡县| 油尖旺区| 科技| 大冶市| 兰考县| 禹州市| 云阳县| 云龙县| 滕州市| 大石桥市| 上思县| 阜平县| 石门县| 宜春市| 鹤峰县| 扶绥县| 灵山县| 镇赉县| 凤翔县| 酉阳| 蓝田县| 台山市| 无极县| 曲沃县| 兴业县| 布尔津县| 潜山县| 饶阳县| 河东区| 萨嘎县| 招远市| 沁源县| 镇江市|