【IPC程式間通訊之四】資料複製訊息WM_COPYDATA
IPC程式間通訊+資料複製訊息WM_COPYDATA
IPC(Inter-Process Communication,程式間通訊)。
資料複製訊息WM_COPYDATA是Windows中一個特殊的訊息,通過這個訊息可以在程式間傳遞資料。
1.WM_COPYDATA:
WM_COPYDATA訊息含兩個引數WPARAM
wParam和LPARAM lParam,WPARAM和LPARAM是匈牙利命名法,歷史更迭,WPARAM指32位整形變數,LPARAM指32為整形變數指標。傳送WM_COPYDATA時,wParam賦值為傳送此訊息的視窗,lParam則指向一個COPYDATASTRUCT結構:
typedef
struct{
ULONG_PTR
dwData;
DWOED cdData;
PVOID lpData;
};
該結構體中,dwData可以使任意值,lpData是需要傳送給視窗所在程式的資料地址,cbData是lpData傳送資料的位元組數。
在傳送WM_COPYDATA訊息時,系統會把COPYDATASTRUCT及lpData指向的內容傳送給目標程式。目標程式接收到WM_COPYDATA訊息後,可以從lParam引數中提取出資料。
2.WM_COPYDATA傳送端:
建立視窗 -> 填充COPYDATASTRUCT -> SendMessage傳送WM_COPYDATA資料。
COPYDATASTRUCT cds; //定義COPYDATASTRUCT變數
SendMessage(
hwndto,
//目標視窗控制程式碼
(UINT)WM_COPYDATA, //指定傳送的資料
(WPARAM)hwndfrom, //將源視窗控制程式碼做WPARAM引數
(LPARAM)&cds //將COPYDATASTRUCT做LPARAM引數
);
3.WM_COPYDATA接收端:
通過lPrama引數獲取COPYDATASTRUCT -> 從COPYDATASTRUCT中提取資料。
COPYDATASTRUCT *PointCds = (COPYDATASTRUCT *)lParam;
PointCds->lpData則是傳輸的資料。
4.牛刀小試:
由於測試程式涉及到視窗建立,較為複雜,附上工程檔案:
傳送端:點選下載
接收端:點選下載
上訴程式編譯環境均為VS 2012
上訴程式參考了《精通 Windows API》一書。
相關文章
- 程式間通訊——XSI IPC之訊息佇列佇列
- 使用WM_COPYDATA訊息通訊
- 程式間通訊 --IPC
- IPC-程式間通訊
- 程式間通訊(IPC) 的限制
- 微服務的程式間通訊(IPC)微服務
- Android程式間通訊–訊息機制及IPC機制實現薦Android
- 程式間通訊--訊息佇列佇列
- linux程式間通訊(IPC)小結Linux
- 【IPC程式間通訊之二】管道PipeC程式
- linux 程式間通訊之System V 訊息佇列Linux佇列
- 【IPC程式間通訊之一】郵槽MailSlotC程式AI
- 如果在C#用WM_COPYDATA訊息來實現兩個程式之間傳遞資料 (轉)C#
- android-IPC/Binder/D-BUS(Binder/Messager/AIDL)程式間通訊(訊息機制)AndroidAI
- Android IPC程式間通訊之AIDL和Messenger的使用AndroidC程式AIMessenger
- Linux系統程式設計之程式間通訊方式:訊息佇列Linux程式設計佇列
- 我最喜歡的程式之間通訊方式-訊息匯流排
- 程序間通訊(2)-訊息佇列佇列
- 程式間的通訊實現(IPC)的11種方法 (轉)
- Android 程式之間通訊Android
- 在如何實現兩個JBoss之間的訊息通訊?
- Binder通訊機制與IPC通訊.md
- js訊息訂閱和釋出實現元件之間通訊JS元件
- 程式間通訊
- Android程式間通訊(複習筆記)Android筆記
- web前端技術分享Electron之IPC 通訊Web前端
- web前端培訓分享Electron之IPC 通訊Web前端
- linux 程式間通訊之FIFOLinux
- linux 程式間通訊之管道Linux
- Linux程式之間如何通訊?Linux
- Electron實戰之程式間通訊
- Linux 下的程式間通訊:使用管道和訊息佇列Linux佇列
- linux環境程式設計(3): 使用POSIX IPC完成程式間通訊Linux程式設計
- chrome devtools 開發之訊息通訊Chromedev
- Linux 程式間通訊之System V 訊號量Linux
- linux 程式間通訊之System V 訊息佇列 www.weiboke.onlineLinux佇列
- Android訊息傳遞之元件間傳遞訊息Android元件
- linux程式間通訊-----System V訊息佇列總結例項Linux佇列