本文共 1073 字,大约阅读时间需要 3 分钟。
在Windows系统中,消息的产生主要涉及以下四种情况:
SendMessage
函数或其他 IPC机制,应用程序之间可以跨进程发送消息。在Windows系统中,消息是通过窗口和线程来传递的。当鼠标点击按钮时,消息会被发送到对应窗口所在线程的消息队列。值得注意的是,Windows系统启动了两个线程分别监听鼠标和键盘输入,这两个线程运行在0环中,与主程序无关。因此,即使主程序卡死,鼠标仍然可以正常移动。
要理解窗口的作用,首先需要了解窗口在哪。通过IDA调试工具分析user32.dll
中的CreateWindow
函数,可以追踪到窗口的创建过程。随后,调试步骤会进入0环,进一步分析窗口的具体信息。
关于窗口的一切数据都位于0环中,包括窗口的创建、显示以及消息处理。因此,窗口的信息非常重要。
窗口对象在0环中以_WINDOW_OBJECT
的结构体形式存在。该结构体包含以下信息:
PTHREADINFO pti
可以知道当前窗口所属哪个线程。需要注意的是,窗口中的按钮等控件也是窗口的一部分,即使它们是子控件,也会被系统视为独立的窗口对象。因此,一个线程可能会拥有多个窗口对象。
Windows系统提供了多种预定义的窗口类,称为子窗口控件(controls),这些控件可以独立处理消息,并在自身状态发生变化时通知父窗口。常见的控件类型包括:
窗口对象中还包含Wnd
成员,用于存储窗口的各种属性,如窗口风格、父窗口信息、子窗口信息等。
Windows系统将窗口对象放在0环中,这意味着:
转载地址:http://nsve.baihongyu.com/