Вопрос: Как работает «explorer.exe» и управляет графическим интерфейсом? [закрыто]


Вся информация утверждает, что это основная оболочка версий Windows 3.x и ОС Windows.

Мой вопрос в том, как эта программа имеет доступ ко всему графическому интерфейсу и данным экрана / фреймбуфера, чтобы рисовать и изменять на нем вещи, и почему другие программы не могут делать то, что они делают, например, меню «Пуск» и прочее, что, по-видимому, Не трогай?

Например, проверка программы в шестнадцатеричном редакторе показывает, что это обычный 32-разрядный исполняемый файл PE, общий для всех исполняемых файлов Windows; однако все программы не могут касаться экранных данных, где находятся начальное меню, панель задач и т. д.

Я слышал, что его можно заменить, но тогда, возможно, обычная программа пользовательского уровня может его изменить? Если нет, то почему и почему можно просто заменить его на другую работу?

Более конкретные детали:

Как explorer.exe касается частей экранной памяти, что обычные программы не могут? Например, я пишу приложение SDL / C ++, которое обертывает Windows API. WinAPI не имеет контроля над меню «Пуск» и т. Д., И я также не знаю других библиотек. Как explorer.exe изменяет экранную память из этих регионов, что другие программы не могут?


-1
2017-10-16 19:55


Источник


По крайней мере, 3 вопроса. Есть слишком много возможных ответов, или хорошие ответы будут слишком длинными для этого формата. Пожалуйста, добавьте детали, чтобы сузить набор ответов или изолировать проблему, на которую можно ответить в нескольких абзацах. - DavidPostill♦
Начните с en.wikibooks.org/wiki/Windows_Programming - DavidPostill♦
Очень подробный материал в этой ссылке, @DavidPostill. Объясняет ли это, почему explorer.exe может получить доступ к экранной памяти в регионах, где, скажем, cmd.exe не может? - Double Teamer
Неа; Я не помню, Я, скорее всего, предоставил больше, чем простое заявление; но мой комментарий не существует, поэтому я не могу проверить! - Ramhound
Я не могу удалить вопросы, поэтому на самом деле я этого не делал! - Ramhound


Ответы:


как эта программа имеет доступ ко всему графическому интерфейсу и данным экрана / фреймбуфера для рисования и изменения материала на нем.

Он использует вызовы API для управления графической подсистемой, которая использует драйверы для управления оборудованием видеоадаптера.

и почему другие программы не могут делать то, что они делают

Они могут и делать. Explorer.exe не создает графику.

как меню пуска и другие вещи, которые обычные программы, по-видимому, не могут коснуться?

Начальное меню и панель задач ARE explorer.exe.

Я слышал, что его можно заменить,

Вы слышали правильно, это сменная.

но тогда возможно ли обычная программа на уровне пользователя изменить его?

Нет, потому что вы не можете изменить оболочку, если у вас нет доступа администратора для редактирования реестра. Затем, как только EXE был настроен как оболочка и автоматически запускается Windows, он теперь работает в контексте системного уровня, а не в контексте пользователя.

Как explorer.exe касается частей экранной памяти, что обычные программы не могут?

Это не так. В лучшем случае он может защитить свою собственную память, форму которой изменяется другими программами, и ОС обеспечивает эту защиту в большинстве случаев. Любая программа может касаться любой области экрана. Доступ к «экранной памяти» напрямую не произойдет в Windows из-за аппаратной абстракции. Если вы не говорите о драйвере, которого нет.

WinAPI не имеет контроля над меню «Пуск» и т. Д., И я также не знаю других библиотек. Как explorer.exe изменяет экранную память из этих регионов, что другие программы не могут?

Опять же, Explerer.exe - это меню «Пуск», «и т. Д.». Explorer использует WinAPI для отображения своих окон и элементов управления (меню «Пуск» и панель задач - это просто окна с элементами управления).

Попробуйте этот эксперимент: откройте диспетчер задач и уничтожьте все копии Explorer.exe, которые вы видите. Когда вы убьете последний, вы заметите, что вы запускаете меню, а панель задач исчезает.

Тем не менее, другие программы ВСЕ ПРОИЗВОДИТСЯ и ЕЩЕ ВИДИМЫ, даже без использования Explorer.exe. Вы даже можете использовать диспетчер задач для обеда «Новые программы»; и они будут запускаться и быть видимыми с окнами и кнопками и всеми. :)

Этот пост CodeProject может помочь вам начать работу и помочь вам обернуть голову вокруг изменения элементов проводника (в этом случае кнопка «Пуск») с точки зрения программирования: Скрытие панели задач и запуска (start orb) в Windows Vista и Windows 7


3
2017-10-16 20:30



Конечно, можно изменить какое-то поведение как с начальным меню, так и с внешним видом, ощущением и некоторым поведением с «папками», но некоторые вещи также невозможны одновременно - Ramhound