`
sipgreen
  • 浏览: 25449 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

C#窗口消息处理机制

    博客分类:
  • C#
 
阅读更多
2、PostMessage 是异步的,SendMessage 是同步的。

  PostMessage 只把消息放入队列,不管消息是否被处理就返回,消息可能不被处理;而 SendMessage 等待消息被处理完了之后才返回,如果消息不被处理,发送消息的线程将一直被阻塞。



3、如果在同一个线程内,SendMessage 发送消息时,由 USER32.DLL
模块调用目标窗口的消息处理程序,并将结果返回。SendMessage 在同一线程中发送消息并不入线程消息队列。PostMessage
发送消息时,消息要先放入线程的消息队列,然后通过消息循环分派到目标窗口(DispatchMessage)。



 如果在不同线程内,SendMessage 发送消息到目标窗口所属线程的消息队列,然后发送消息的线程在 USER32.DLL
模块内监视和等待消息处理,直到目标窗口处理完返回。SendMessage 在返回前还做了很多工作,比如,响应别的线程向它
SendMessage。Post 到别的线程时,最好用 PostThreadMessage 代替
PostMessage,PostMessage 的 hWnd 参数可以是 NULL,等效于 PostThreadMessage +
GetCurrentThreadId。Post WM_QUIT 时,应使用 PostQuitMessage 代替。



4、系统只整编(marshal)系统消息(0 到 WM_USER 之间的消息),发送用户消息(WM_USER 以上)到别的进程时,需要自己做整编。



  用 PostMessage、SendNotifyMessage、SendMessageCallback 等异步函数发送系统消息时,参数里不可以使用指针,因为发送者并不等待消息的处理就返回,接受者还没处理指针就已经被释放了。



5、在 Windows 2000/XP 里,每个消息队列最多只能存放 10,000 个 Post
的消息,超过的还没被处理的将不会被处理,直接丢掉。这个值可以改得更大:[HKEY_LOCAL_MACHINE/SOFTWARE/
Microsoft/Windows NT/CurrentVersion/Windows] USERPostMessageLimit,最小可以是
4000。

PostMessage只负责将消息放到消息队列中,不确定何时及是否处理

    SendMessage要等到受到消息处理的返回码(DWord类型)后才继续

    PostMessage执行后马上返回

    SendMessage必须等到消息被处理后才会返回。
分享到:
评论

相关推荐

    C#设置键盘钩子屏蔽键盘信息

    钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序...

    C#中通过钩子实现屏蔽组合功能键

    Hook(钩子)是WINDOWS提供的一种消息处理机制平台,是指在程序正常运 行中接受信息之前预先启动的函数,用来检查和修改传给该程序的信息,(钩子)实 际上是一个处理消息的程序段,通过系统调用,把它挂入系统。...

    c#串口测试程序

    //制是消息流水线响应机制,如果这里在主线程上处理语句的时间过长会导致主UI线程阻塞,停止响应或响 //应不顺畅,这时你的主form界面会延迟或卡死 //this.textBox1.AppendText(jsq.ToString());//输出到主窗口 /...

    Visual.C#2010从入门到精通

    3.5.2 异常处理机制 51 3.5.3 基本异常处理方法 52 3.5.4 多个异常处理方法 54 3.6 小结 56 第4章 Visual C++调试技术 57 4.1 Debug与Release 57 4.2 调试的过程 58 4.2.1 设置断点 58 4.2.2 控制程序的运行 60 4.3 ...

    C#实训教程

    5.3 预定义事件处理机制 92 5.4 内容总结 100 5.5 独立实践 100 6 运算符和类型强制转换 101 6.1 运算符 101 6.2 运算符的简化操作 102 6.3 类型的安全性 107 6.4 类型转换 108 6.5 装箱和拆箱 111 6.6 对象的相等...

    C#微软培训资料

    14.1 C#的继承机制.155 <<page 3>> page begin==================== 14.2 多 态 性 .159 14.3 抽象与密封 .163 14.4 继承中关于属性的一些问题.169 14.5 小 结 .172 第四部分 深入了解 C#.174 第十...

    c#进程守护软件-附源码

    19、加入配置文件错误的一些纠缠机制(linecount没有会自动创建并赋值3,值为"",也会自动修复),当然错误的情况不够完善,只考虑了没有整项或者值为""的情况,其他情况没有处理,如果遇到其他情况只会导致程序停止...

    FileDropHandler.cs

    UIPI 的目的是为了规范不同进程窗口之间的窗口消息处理过程,默认情况下,高权限进程不会接收到低权限进程发送的窗口消息的,但是低权限进程能够接收到高权限进程的窗口消息。UIPI 的本质是系统检查目标窗口和发送方...

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第2部分)

    7.2 理解并行任务调试器窗口 7.3 查看Parallel Stacks图 …… 第8章 线程池 第9章 异步编程模型 第10章 并行测试和调优 第11章 向量化、SIMD指令以及其他并行库 附录A .NET 4中与并行相关的类图 附录B 并发...

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第3部分)

    7.2 理解并行任务调试器窗口 7.3 查看Parallel Stacks图 …… 第8章 线程池 第9章 异步编程模型 第10章 并行测试和调优 第11章 向量化、SIMD指令以及其他并行库 附录A .NET 4中与并行相关的类图 附录B 并发...

    Visual C#网络编程技术与实践源代码

     2.3.3 使用特殊标记处理消息  2.4 本章小结 第3章 开发基于TCP协议的应用程序  3.1 套接字与TCP协议  3.1.1 使用套接字传输数据  3.1.2 NetworkStream对象同数据发送与接收  3.1.3 TcpClient与Tcp...

    深入分析C#键盘勾子(Hook)拦截器,屏蔽键盘活动的详解

    钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序...

    C# 2.05 校园拨号器 协同拨号器 GHCA V10版

    修复了一下小bug,应某些人要求将CMD窗口封装起来了,以便更好的读取错误信息,当已经连接错误弹出时程序不再自动关闭。。 By Zhangzhezh 2010-11-20 V9 2.05 当勾选了自动连接并且已经连接至互联网的情况下程序...

    协同拨号器 校园拨号器 C# GHCA 2.05 V11

    修复了一下小bug,应某些人要求将CMD窗口封装起来了,以便更好的读取错误信息,当已经连接错误弹出时程序不再自动关闭。。 By Zhangzhezh 2010-11-20 V9 2.05 当勾选了自动连接并且已经连接至互联网的情况下程序...

    wpf源码大全 精通C#3.0图书源码 详细源码 学习好用

    MessageBoxDemo 消息框使用示例。 NavigationEventDemo 理解和使用导航事件。 NavigationServiceDemo 导航服务示例。 NavigationWindowDemo 使用WPF中的导航窗口进行导航。 PageFunctionDemo 使用Page...

    协同拨号器 校园拨号器 C# 2.05 GHCA V12

    主界面重新排版,IP设置界面加入了例外处理,加入链接状态显示,加入断开连接功能,再次增加检测等待时间,以免遇到不准确的连接不成功提示。。 优化了部分代码,修正一下小Bug。。 By Zhangzhezh 2010-11-10 ...

    GHCA 校园拨号器 协同拨号器 C# 2.05 V13

    主界面重新排版,IP设置界面加入了例外处理,加入链接状态显示,加入断开连接功能,再次增加检测等待时间,以免遇到不准确的连接不成功提示。。 优化了部分代码,修正一下小Bug。。 By Zhangzhezh 2010-11-10 ...

    协同拨号器 C# 校园拨号器 2.05 V15

    主界面重新排版,IP设置界面加入了例外处理,加入链接状态显示,加入断开连接功能,再次增加检测等待时间,以免遇到不准确的连接不成功提示。 优化了部分代码,修正一下小Bug。 By Zhangzhezh 2010-11-10 V6...

    C# GHCA 2.05 校园拨号器 协同拨号器 V14

    主界面重新排版,IP设置界面加入了例外处理,加入链接状态显示,加入断开连接功能,再次增加检测等待时间,以免遇到不准确的连接不成功提示。。 优化了部分代码,修正一下小Bug。。 By Zhangzhezh 2010-11-10 ...

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第一部分)

    7.2 理解并行任务调试器窗口 7.3 查看Parallel Stacks图 …… 第8章 线程池 第9章 异步编程模型 第10章 并行测试和调优 第11章 向量化、SIMD指令以及其他并行库 附录A .NET 4中与并行相关的类图 附录B 并发UML模型 ...

Global site tag (gtag.js) - Google Analytics