【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之訊息佇列佇列
- IPC-程式間通訊
- linux程式間通訊(IPC)小結Linux
- 微服務的程式間通訊(IPC)微服務
- 程式間通訊--訊息佇列佇列
- linux 程式間通訊之System V 訊息佇列Linux佇列
- IPC(InterProcess Communication):程序間通訊
- Linux系統程式設計之程式間通訊方式:訊息佇列Linux程式設計佇列
- Android 程式之間通訊Android
- linux 程式間通訊之System V 訊息佇列 www.weiboke.onlineLinux佇列
- 我最喜歡的程式之間通訊方式-訊息匯流排
- linux環境程式設計(3): 使用POSIX IPC完成程式間通訊Linux程式設計
- 系統程式設計——IPC訊息佇列程式設計佇列
- linux 程式間通訊之管道Linux
- linux 程式間通訊之FIFOLinux
- Linux程式之間如何通訊?Linux
- Android程式間通訊(複習筆記)Android筆記
- 程序間通訊(2)-訊息佇列佇列
- Binder通訊機制與IPC通訊.md
- Lazarus使用IPC收發訊息
- Linux 下的程式間通訊:使用管道和訊息佇列Linux佇列
- web前端技術分享Electron之IPC 通訊Web前端
- web前端培訓分享Electron之IPC 通訊Web前端
- Electron實戰之程式間通訊
- Linux 程式間通訊之System V 訊號量Linux
- js訊息訂閱和釋出實現元件之間通訊JS元件
- chrome devtools 開發之訊息通訊Chromedev
- ThreadX——IPC應用之訊息佇列thread佇列
- 溫故之.NET程式間通訊——管道
- 實現不同程式之間的通訊
- 程式間通訊之共享記憶體記憶體
- 關於IPC-Message通訊
- electron-ipc通訊效能分析
- JUC之執行緒間定製化通訊執行緒
- python 之 併發程式設計(守護程式、互斥鎖、IPC通訊機制)Python程式設計
- PHP程式間通訊PHP
- 程式間通訊——LINUXLinux
- 程式間通訊(Socket)
- 程式間的通訊