该程序如何访问整个GUI和屏幕/帧缓冲区数据以在其上绘制和更改内容。
它使用对API的调用来控制图形子系统,图形子系统使用驱动程序来控制视频适配器硬件。
为什么其他程序不能做它做的事情
他们可以并且可以做。Explorer.exe没有图形生成。
例如开始菜单和其他普通程序似乎无法触及的东西?
开始菜单和任务栏为explorer.exe。
我听说有可能更换它,
您没听错,它是可更换的。
但是普通用户级程序可以更改它吗?
不可以,因为除非拥有管理员权限才能编辑注册表,否则您无法更改外壳。然后,将EXE设置为外壳程序并由Windows自动运行后,它现在就在系统级上下文而不是用户上下文下运行。
explorer.exe如何触及普通程序无法访问的屏幕内存部分?
没有。充其量,它可以保护自己的存储空间,而其他程序可以更改它的存储空间,而操作系统无论如何都可以提供大部分保护。任何程序都可以触摸屏幕的任何区域。由于硬件抽象,在Windows中将不会直接访问“屏幕内存”。除非您谈论的是司机,否则您不是。
WinAPI无法控制开始菜单等,我所知道的任何其他库也没有。explorer.exe如何从其他程序无法改变的这些区域更改屏幕内存?
同样,Explerer.exe是“开始”菜单的“等”。资源管理器使用WinAPI来显示其窗口和控件(“开始菜单”和“任务栏”只是带有控件的窗口)。
尝试以下实验:打开任务管理器,并杀死您看到的Explorer.exe的所有副本。当您杀死最后一个时,您会发现开始菜单和任务栏消失了。
即使没有运行Explorer.exe,其他程序仍在运行并且仍然可见。您甚至可以使用任务管理器来午餐新程序。然后它们就会通过窗口,按钮以及所有内容启动并可见。:)
从编程的角度来看,此CodeProject帖子可能有助于您入门,并且可以帮助您修改Explorer元素(在本例中为“开始”按钮):在Windows Vista和Windows 7中隐藏任务栏和Startmenu(启动orb)。