-
-
[分享]Windows消息那些事
-
发表于:
2014-9-6 00:02
6737
-
说一说windows消息常用API"PostMessage、SendMessage、TranslateMessage、DispatchMessage、PeekMessage、GetMessage"------------大牛门不要喷哟!
1、SendMessage可以向其他进程窗口发送指针类型数据,原理是Windows为进程间创建了共享内存,但有限制条件,必须使用Windows已有的消息,否则Windows不会创建共享内存;(可以传递指针类型的消息常用的有WM_SETTEXT, WM_GETTEXT, WM_COPYDATA,这一类消息必须使用SendMessage,如果使用PostMessage也不会成功)
2、PostMessage只是将消息发送到系统消息队列,之后PostMessage立即返回。目标任务到系统消息队列使用GetMessage去取,之后系统消息队列中删除对应消息;
3、SendMessage是将消息直接发送到窗口的处理过程,而不经过系统消息队列,当目标处理过程执行完成后,SendMessage返回;
4、PeekMessage与GetMessage类似,根据最后一个参数PeekMessage可以决定他从消息队列中取出的消息是否删除;
5、Windows任务间每20ms切换一次;
6、TranslateMessage用于消息循环中处理键盘消息,他把扫描码转换成ASCII码并在消息队列里插入WM_CHAR和WM_SYSCHAR消息;非键盘消息他不处理;
7、DispatchMessage用于消息循环中分发消息给窗口处理过程,当窗口处理过程执行完成后DispatchMessage再返回;
8、在win32中模块句柄在数值上等于程序在内存中装入的起始地址
9、TranslateAccelerator作用是把键盘快捷键转换成命令消息
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课