Windows消息通信机制简述

在Windows中,可使用消息机制进行线程间,或进程间的通信,具有简单高效的特点。其中SendMessage和PostMessage和PostThreadMessage都可以在线程和进程之间通信,区别在于SendMessage是阻塞的,面向窗口的(即必须传入窗口句柄),PostMessage是非阻塞的,面向窗口的,PostThreadMessage是面向线程的,不需要传入窗口句柄。这些函数都可以在不同进程之间使用。在应用范围内,如果要发送自定义消息,参考下面的MSDN有如下描述:

For sending private messages within a window class, an application can use any integer in the range WM_USER through 0x7FFF. (Messages in this range are private to a window class, not to an application.

意思是消息的范围必须在WM_USER一直到0x7FFF之间,但这是针对某一个窗口的,不同窗口之间可以重复。

在不同的应用之间,也可以使用SendMessage和PostMessage发送消息,消息范围也可以是以上范围。

PostThreadMessage的作用是向指定的线程发送消息,需要知道线程id,而获得一个窗口所属的线程id的函数是

DWORD GetWindowThreadProcessId(HWND hWnd,
    LPDWORD lpdwProcessId
);
特别地,对于广播的消息发送,选择窗口句柄为HWND_BROADCAST,要对不同应用同时发送消息,可以使用RegisterWindowMessage函数传入相同的字符串返回同一个消息id,其范围在0xC000到0xFFFF






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值