“ explorer.exe”如何工作并控制GUI?[关闭]


-1

所有信息都指出,这是Windows 3.x版本和Windows OS的主要外壳。

我的问题是,该程序如何访问整个GUI和屏幕/帧缓冲区数据以在其上绘制和更改内容,以及为什么其他程序不能执行其操作,例如开始菜单和其他正常程序似乎可以执行的操作不碰?

例如,在十六进制编辑器中检查程序将显示它是所有Windows可执行文件都通用的32位PE可执行文件常规格式。但是,所有程序都无法触摸开始菜单,任务栏等所在的屏幕数据。

我听说可以替换它,但是普通的用户级程序可以更改它吗?如果不是,为什么,为什么可以简单地用另一个程序替换它呢?

更具体的细节:

explorer.exe如何触及普通程序无法访问的屏幕内存部分?例如,我编写了一个包装Windows API的SDL / C ++应用程序。WinAPI无法控制开始菜单等,我所知道的任何其他库也没有。explorer.exe如何从其他程序无法改变的这些区域更改屏幕内存?


多数民众赞成在至少三个问题。对于这种格式,可能答案太多,或者好的答案太长。请添加详细信息以缩小答案范围或隔离可以在几段中回答的问题。
DavidPostill


该链接中非常详细的内容,@ DavidPostill。它是否解释了为什么explorer.exe可以访问cmd.exe无法访问的区域中的屏幕内存?
Double Teamer 2014年

1
不; 我不记得了。不过,我可能提供的不只是简单的声明。但是我的评论不存在,所以我无法检查!
Ramhound 2014年

2
我无法删除问题,所以我实际上没有!
Ramhound 2014年

Answers:


3

该程序如何访问整个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)。


当然,可以通过“开始”菜单以及外观,感觉和“文件夹”来更改某些行为,但同时也无法进行某些操作
Ramhound 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.