suncode

  博客园 :: 首页 :: 新随笔 :: :: :: 管理 ::

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

       );

posted on 2011-03-18 17:07  suncode  阅读(4105)  评论(0)    收藏  举报