Detours私密文件访问监控程序的实现(5)
时间:2017-05-16 11:24 来源:毕业论文 作者:毕业论文 点击:次
非队列化消息则是其它消息。在许多情况下,非队列化消息来自呼叫特定的Windows函数。例如,当WinMain呼叫CreateWindow时,Windows将建立窗口并在处理中给窗口消息处理程序发送一个WM_CREATE消息。当WinMain呼叫ShowWindow时,Windows将给窗口消息处理程序发送WM_SIZE和WM_SHOWWINDOW消息。当WinMain呼叫UpdateWindow时,Windows将给窗口消息处理程序发送WM_PAINT消息。键盘或鼠标输入时发出的队列化消息信号,也能在非队列化消息中出现。例如,用键盘或鼠标选择了一个菜单项时,键盘或鼠标消息就是队列化的,而说明菜单项已选中的WM_COMMAND消息则可能就是非队列化的。 图5 Windows消息机制 (4) SendMessage()与PostMessage()之间的区别 它们两者是用于向应用程序发送消息的。PostMessagex()将消息直接加入到应用程序的消息队列中,不等程序返回就退出;而SendMessage()则刚好相反,应用程序处理完此消息后,它才返回。图6能够比较好的体现这两个函数的关系: 图6 postmessage与sendmessage的区别 (5) 函数peekmessage和getmessage的区别 1.GetMessage将等到有合适的消息时才返回,而PeekMessage只是撇一下消息队列。 2.GetMessage会将消息从队列中删除,而PeekMessage可以设置最后一个参数wRemoveMsg来决定是否将消息保留在队列中。 (责任编辑:qin) |