進程間通信之WM_COPYDATA

在Windows程序中,各個進程之間常常需要交換數據,進行數據通訊。常用的方法有

-> 使用內存映射文件
-> 通過共享內存DLL共享內存
-> 使用SendMessage向另一進程發送WM_COPYDATA消息

比起前兩種的復雜實現來,WM_COPYDATA消息無疑是一種經濟實惠的一中方法.

使用方法:
SendMessage(hwnd,WM_COPYDATA,wParam,lParam);
其中,WM_COPYDATA對應的十六進制數為0x004A
wParam設置為包含數據的窗口的句柄。lParam指向一個COPYDATASTRUCT的結構:
typedef struct tagCOPYDATASTRUCT
{
DWORD dwData;//用戶定義數據
DWORD cbData;//數據大小
PVOID lpData;//指向數據的指針
}COPYDATASTRUCT;

該結構用來定義用戶數據。

有時候WM_COPYDATA收不到信息的問題:
1、SendMessage()函數中,wParam不能為空,有時候做測試時會出現,lParam可以為空;
2、低權限進程不能想高權限發送該消息,同時也包括其他許多消息也是如此。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容