Windows如何知道哪个消息属于哪个进程

How Does Windows Know Which Messages Belong to Which Process?

本文关键字:属于 进程 消息 Windows 何知道      更新时间:2023-10-16

Windows是否知道哪些消息属于每个特定的窗口(如果是的话,它是如何知道的?)或者它只是发送消息一般,它是由应用程序来抓取它需要的消息?

谢谢大家的回复。我真的很喜欢有人不加解释就投了反对票。

即使在这些先进的64位的日子里,Windows应用程序仍然,最终,在某个深层次的,黑暗的点,仍然由窗口消息处理循环组成。进程的主消息"泵"负责将消息从队列中拉出,并通过SendMessage API的hWnd参数(方法的第一个参数)将它们定向到适当的窗口。

在应用程序中,像单击事件这样的事情最终被转换为消息到一个窗口,如果该窗口决定不处理该消息,则将其传递给父窗口链,直到根据其他参数选择处理它。或者,消息的窗口接收者可以显式地通知父窗口WM_PARENT_NOTIFTY,它刚刚收到的消息导致了父窗口应该知道的事情发生。例如,考虑一下在颜色选择器对话框中更改颜色如何需要通知其父框颜色更改。在大多数应用程序中有无数这样的链式依赖,这解释了你所说的许多编排。

显然,去适当的窗口处理程序接收,说,鼠标点击,一个低级别的系统处理程序必须找出鼠标点击时,和窗口管理器将指向窗口的最高的z值的推理,窗口是活动的一部分应用当时鼠标点击,最终使应用程序和窗口"WM_CLICK"消息的目标。

这是一个相当简单的说明,我相信可能有相关的细节(坑洞?:):)我省略了,但我认为它提供了一个基本问题的画面。