您的位置:首页 > 其它

windows消息机制

2011-03-05 17:45 176 查看
windows系统下允许多个程序同时运行,多个程序要共享一些东西,最重要的恐怕就是输入输出了,输入通常指键盘或鼠标,输出通常指显示器的显示画面(如果一个程序不能相应输入,很难想象他有什么用途,如果一个程序没有显式的输出,恐怕只要木马病毒或是垃圾软件才做这样的暗地勾当)。多个运行的程序之间如何有效正确的分配输入输出还有其它一些资源呢?答案是windows的消息机制,windows系统下由windows系统充当了一个总管家,所有的输入信息,首先都到达了windows,然后由windows来决定如何将这些信息发送给各个应用程序,在这里windows就像一个邮局,所有信件不是直接送给收信人,而是都发送给了邮局,然后由邮局统一发放给该接收的人。同样,对于输出来说,也是由windows进行统管,以确定由那一个程序的输出画面显示到你唯一(通常是)的显示器上。

对于如何分配输入,windows采用的是消息队列方法,windows为每个运行的程序构建一个消息队列,当有输入来到时,windows进行判断,决定将消息发送给哪个窗口,对于鼠标消息,windows判断鼠标点击位置属于哪一个窗口,从而将消息发送给那个窗口,对于键盘消息,windows维持着一个键盘输入焦点,且只有一个焦点,哪个窗口拥有这个焦点时(通常是前台窗口)windows就将键盘消息发送给那个窗口,说到这里有人可能会疑惑,既然windows只维持了一个输入焦点,而键盘输入只能发送给拥有输入焦点的那个窗口,那么木马病毒是如何获得你键盘输入消息从而记录了帐号和密码信息呢?答案是windows支持了消息的截获和复制。在windows得到消息往正确窗口发送消息之前,windows允许使用一个函数,将这个消息截获,同时windows还允许使用一个函数,将这个消息发送给本不属于它的窗口(相当于复制),这样以来windows就对木马有了很好的支持,windows在设计之时一定意识到了这种情况,但出于方便程序设计,和其它的一些原因,还是最终决定了那么做。如果windows不允许对消息进行截获,木马将无法用力,同样杀毒软件也将无法给力(或者说不需要什么杀毒软件了)。杀毒软件也是对这些消息进行截获。这里不再对这些进行更深入的探讨,在以后的时间里,有机会在慢慢一步一步的去逐层深入研究。

了解了这些基本知识,下一节将以一个最简单的windows窗口程序为例,详细说明windows消息机制,以及在这种机制下windows程序的设计方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: