进程入门之sendmessage

来源:互联网 发布:福建海关进出口数据 编辑:程序博客网 时间:2024/06/03 21:31

 

发送端:

(1)定义消息

#define WM_STARCAPTURE   4004

 (2)找到接收方的句柄

         如在MFC里可以采用 HWND hwnd=::FindWindow(NULL,"SERVER"); 这样的形式获取。

其中“SERVER”是接收方的窗口名。

(3)发出消息

  ::SendMessage(hwnd, WM_STARCAPTURE, 0, 0);

     

 

接收端:

(1)定义消息 (要与上面的一致)

       #define WM_STARCAPTURE   4004

  (2)声明消息响应函数

            LRESULT OnStarCapture(WPARAM wp, LPARAM lp);

    (3)声明消息映射

BEGIN_MESSAGE_MAP(CTest2Dlg, CDialog)

      ON_MESSAGE(WM_STARCAPTURE,OnStarCapture)//映射
END_MESSAGE_MAP()

     (4)定义消息响应函数

       LRESULT CTest2Dlg::OnStarCapture(WPARAM wp, LPARAM lp)
{
 MessageBox("hello");
 return NULL;
}

 

注意:

sendmessage 是同步的。执行这个函数后,此进程会祖塞,把运行的权利转让给 接收端的程序,执行完消息响应函数后,运行的权利重新回到发送端。

另外,postMessage 也可以跨进程发送消息。但是它是异步的,

 

附加基础知识:

SendMessage 的四个参数:
hwnd Long,要接收消息的那个窗口的句柄 
wMsg Long,消息的标识符 
wParam Long,具体取决于消息 
lParam Any,具体取决于消息 

例子里,没有用到 后面2个参数。后面的2个参数可以传递指针。


 

 

0 0
原创粉丝点击