WM_COPYDATA是一个非常特殊的消息,此消息可以携带一个较大的消息参数,而其他消息都只能写到两个固定大小的参数(WPARM LPARAM)
发送WM_COPYDATA消息时wParam参数应该赋值为发送此消息的窗口,lParam指向一个 COPYDATASTRUCT结构类型的变量
typedef struct COPYDATASTRUCT{
ULONG_PTR dwData; //可以是任意值
DWORD cb_data; //指定lpData内存区域的字节数
PVOID lpData; //发送给目录窗口所在进程的数据
}COPYDATASTRUCT, *PCOPYDATASTRUCT;
/*******************************************************************/
LPSTR szText = (LPSTR)HeapAlloc(GetProcessHeap(), HEAP_NO_SERIALIZE, dwTextLength);
COPYDATASTRUCT cds;
HWND hw=FindWindow("window", "RECV COPYDATA");
cds.dwData=0x123456;
cds.cbData=dwTextLength;
cds.lpData=szText;
SendMessage(hw, //目标窗口
(UNIT)WM_COPYDATA, //消息ID
(WPARAM) hwnd , //原窗口句柄
(LPARAM) &cds
);

浙公网安备 33010602011771号