Window API 之 PostMessage (消息投递)

摘要:
PostMessage:将消息发布到指定窗口的消息队列。发布的消息将在Windows事件处理期间处理。数据中的定义如下:PostMessage、PostMessage拜纳姆、PostMessageBystringVB、DeclareFunctionPostMessage&Lib“user32”Alias“PostMessageA”DeclareFunction PostMessageBynum&Lib”user32“Alias”PostMessageA“DeclareFunctionPostMessageByString&Lib”user32“Alias“PostMessage A”DecorateFunctionPostMessageByString&Lib,其指示消息被传递到指定窗口的消息队列。它特别适合发送不需要立即处理的窗口消息。如果消息成功传递,则返回TRUE(非零)。将设置GetLastError参数列表参数类型和描述hwndLong,并设置接收消息的窗口的句柄。如果设置了HWND _ BROADCAST,这意味着发布到系统中的所有顶级窗口。源代码下载Windows API查询工具Technorati标签:PostMessage

PostMessage:

将一条消息投递到指定窗口的消息队列。投递的消息会在Windows事件处理过程中得到处理。
在那个时候,会随同投递的消息调用指定窗口的窗口函数。特别适合那些不需要立即处理的
窗口消息的发送返回值 。自己的理解是:通过这个函数,可以将自己想发送的消息发送到你想发送的窗口。就好比是两个人在发短信,那么这个函数就相当于是一部手机。查找资料看到的定义如下:

PostMessage, PostMessageBynum, PostMessageBystring

VB声明

Declare Function PostMessage& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Declare Function PostMessageByNum& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)
Declare Function PostMessageByString& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String)

说明

将一条消息投递到指定窗口的消息队列。投递的消息会在Windows事件处理过程中得到处理。在那个时候,会随同投递的消息调用指定窗口的窗口函数。特别适合那些不需要立即处理的窗口消息的发送

返回值

Long,如消息投递成功,则返回TRUE(非零)。会设置GetLastError

参数表

参数
类型及说明

hwnd
Long,接收消息的那个窗口的句柄。如设为HWND_BROADCAST,表示投递给系统中的所有顶级窗口。如设为零,表示投递一条线程消息(参考PostThreadMessage

wMsg
Long,消息标识符

wParam
Long,具体由消息决定

lParam
Any,具体由消息决定

通过API查询的工具可以找到C#的声明方式:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern int PostMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

具体应用:

做一个关闭窗口的小程序来进行演示:

2011-01-18_164853

主要功能:

列出正在运行的窗体的名字,通过窗体的名字,发送一个关闭的消息,将窗口关闭。

源代码下载

Windows API 查询工具

Technorati 标签: PostMessage

免责声明:文章转载自《Window API 之 PostMessage (消息投递)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇委托和多线程(一)http常用报错码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MQTT的使用介绍

之前项目中使用到了mqtt,刚开始用着用着都不知道是干啥的,后来百度了一下: MQTT MQTT基于订阅者模型架构,客户端如果互相通信,必须在同一订阅主题下,即都订阅了同一个topic,客户端之间是没办法直接通讯的。订阅模型显而易见的好处是群发消息的话只需要发布到topic,所有订阅了这个topic的客户端就可以接收到消息了。 发送消息必须发送到某个to...

百度地图API自定义地图

http://api.map.baidu.com/lbsapi/creatmap/index.html http://developer.baidu.com/map/index.php?title=webapi <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/...

IOS网络编程之Socket详解

Socket描述了一个IP、端口对。它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息。所以,Socket一定包含了通信的双发,即客户端(Client)与服务端(server)。1)服务端利用Socket监听端口;2)客户端发起连接;3)服务端返回信息,建立连接,开始通信;4)客户端,服务端断开连接。 1...

基于Zabbix WebUI的API实现自动化添加主机实战案例

      基于Zabbix WebUI的API实现自动化添加主机实战案例                                作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。   在之前的笔记里我分享了如何批量添加zabbix agent主机,今天我们就实现如何基于zabbix webUI的API接口实现批量添加主机。有的小伙伴...

Linux命令发送Http的get或post请求(curl和wget两种方法)

    Http请求指的是客户端向服务器的请求消息,Http请求主要分为get或post两种,在Linux系统下可以用curl和wget命令来模拟Http的请求。下面就来介绍一下Linux系统如何模拟Http的get或post请求。 一、get请求:   1、使用curl命令:   curl “http://www.baidu.com” 如果这里的URL指...

全面解读:微信服务号升级和群发增至4条的应用方法

全面解读:微信服务号升级和群发增至4条的应用方法 摘要:微信公众平台正式公布微信服务号升级的消息,提供高级群发接口,火速华磊初步总结:群发接口的提供意味着企业获得了精准推送的能力、企业获得了每月多次激活粉丝的能力、企业公众号的粉丝活跃度全面提升、公众号的营销核心过程趋于完美。 2014/4/15 21:58分,微信公众平台正式公布微信服务号升级的消息,消...