一、概述
Windows系统有个窗口(工作)站的概念,这个名词估计很多Windows编程者都不知。了解这个概念对Windows桌面应用开发还是挺有帮助的,尤其是交互窗口应用程序的开发。
窗口站,window station,是由进程创建,这个进程应该是登录进程,即winlogon进程。而交互式窗口站被创建时,默认会有三个桌面被生成,包括:winlogon桌面、屏保桌面和默认桌面(default desktop)。交互式窗口站创建时,一定会关联一个默认的桌面,就是我们看到的desktop(Winsta0\default)。
二、概念理解
- winlogon 桌面,系统创建后,在用户登录时被激活。我们使用Ctrl+Alt+Del键时,或者弹出UAC弹窗时,我们看到的就是winlogon。
- ScreenSaver desktop,就是我们用的屏保桌面。这个在我们启用屏保程序时,会被唤醒激活。现在这个比较少看到了。屏保桌面,主要是为了保护我们大屁股的显示器而产生的。
- 默认桌面,Default desktop,就是我们常说的桌面,可以和我们的应用程序做交互的那个桌面。它是winLogon进程启动初始化进程winInit时创建的(附图的winInit和winLogon应该对调位置)。当winlogon创建一定时间(好像是30秒)或者系统外壳程序检测到可以展示内容时,就会切换的默认窗口。
三、场景理解
- 我们的进程之间发送的窗口消息,如WM_CLOSE,