ROS Shell

Материал из Русский WINE
Перейти к: навигация, поиск

Содержание

Оболочка в ReactOS

На данной странице описана история оболочки ReactOS, ее текущее состояние и запланированные возможности.

История разработки

Начало

Первое время в ReactOS не было графической оболочки. Она была реализована в выпуске 0.2, Мартином Фуксом, при чем реализована неправильно с точки зрения ее программной архитектуры. В ReactOS, кроме этого проводника есть еще один - explorer_new. В идеале он должен по функциональности быть аналогичным проводнику Windows, но для нормальной работы ему была необходима библиотека Shell32.dll.

Работу над новой оболочкой начал Томас Блюмел (Thomas Bluemel), в качестве прототипа он выбрал оболочку Windows 2003 и провёл большую работу по разграничению функциональности между Explorer и Shell32. Но из-за отсутствия Shell32, новая версия Explorer ещё не работала. Позднее Эндрю Хилл (Andrew Hill) позаимствовал и доработал некоторые библиотеки из Wine.[1]

Первым большим шагом в разработке Shell32 был контракт, заключённый с Яннисом Адамопулосом (Giannis Adamopoulos) на доработку библиотеки shell32 и компонента browseui, который необходим проводнику для отображения файлового браузера. Итогом контракта стал перевод shell32 на C++, а также создание библиотеки browseui.dll. Так же Яннис изучил инфраструктуру поддержки оболочки и написал на нее документацию.

После контракта с Яннисом

Позже, 2 февраля 2014 г. была создана отдельная ветка разработки shell-experiments, в которой над shell32 работал Дэвид Кинтана (David Quintana) c ником Gigaherz.

С 26 октября 2014 г. над оболочкой так же работает Яннис Адамопулос (Giannis Adamopoulos).

  • С 7 марта 2014 г. в ветке shell-experiments новая оболочка запускается по умолчанию (explorer_new переименован в explorer, а explorer в explorer_old).
  • 26 ноября 2014 г. наработки Shell-experiments влиты в транк в ревизии 65496.
  • Все подзадачи разработки shell32
  • 9 января 2017 года был заключен новый контракт с Яннисом на доработку поддержки тем

Прогресс

  • 13 июля 2014г. завершена работа над CMergedFolder
  • 24 августа 2014г. были реализованы горячие клавиши Ctrl+C, Ctrl+X, Ctrl+V.
  • 28 сентября 2014г. реализован IPC

Схема компонентов Shell32

ReactShellProgress.png

На данной схеме визуально отмечены компоненты Shell32.

Нереализованные возможности

не реализовано начата работа
  • динамический обмен данными (DDE)

Отчеты о оболочке в багтеркере

  • Задачи по разработке оболочки CORE-5620
  • Основные нереализованные возможности CORE-9277
  • Переписывание кэша значков и извлечения значков (CORE-7563)

Реорганизация ресурсов оболочки

В рамках своей работы (CORE-10030) Robert Naumann:

  • переработал диалоги свойств, сделав их лучше, добавил недостающие ресурсы и удалил ненужные
  • заменил значок меню Пуск растровым
  • исправил существующие значки и добавил недостающие (CORE-9240)
  • реорганизовал структуру ресурсов папок

Компоненты

ReactOS-browseui.jpg

Browseui.dll

На 13 июля 2017 г.:

  • отображается содержимое текущей папки
  • в заголовке окна отображается значок папки
  • отображаются кнопки
  • у кнопок появились значки
  • в режиме списка были реализованы сортировочные стрелки

Реализация кнопок

Кнопки в панели инструментов браузера файлов можно разделить на 4 группы:

  • Навигационные кнопки, с историей назад / вперед и «вверх»,
  • Кнопки боковой панели "папки" и "поиск"
  • Операции с файлами, "копировать в", "переместить в", "удалить" и "отменить".
  • Режим просмотра

Работают:

  • навигация
  • изменение размера значков
  • папки

Разрабатываются:

  • копировать в/переместить в (CORE-11132)

Shdocvw

Shdocvw.dll - библиотека, которая содержит части пользовательского интерфейса как IE, так и файловой системы. В данном контексте - "файловая система" - часть проводника используемая для просмотра папок и файлов. Библиотека "SHDocVw.dll" - неуправляемый COM объект.

Реализованные функции
Функция Версия IE Статус
AddUrlToFavorites 4.71 и выше
CallRegisterServer_RunDLL толко 4.70 из Internet Explorer 3.00
CDDEAuto_Navigate (162) 4.71 и выше
ClearAutoSuggestForForms (211) 5.0 и выше
ClearExtensionRecordsBlockReason (234) 6.0 из Windows XP SP2 и Windows Server 2003 SP1, и выше
CreateFromDesktop (115) 4.71 и выше
CreateShortcutInDirA (102) 4.70 из Windows 95 OSR2, и выше
CreateShortcutInDirW (103) 4.70 из Windows 95 OSR2, и выше
CreateShortcutInDirEx (105) 5.0 и выше
CShellUIHelper_CreateInstance2 (152) 4.71 и выше
DDECreatePostNotify (116) 5.0 и выше
DDEHandleViewFolderNotify (117) 4.71 и выше
_DeletePidlDPA (171) 5.0 и выше
DetectAndFixAssociations (175) 5.0 и выше
DisplayUrlParseError (199) 5.0 из before Windows 2000; 6.0 из Windows Vista, и выше
DllCanUnloadNow 4.70 и выше
DllGetClassObject 4.70 и выше
DllGetVersion 4.70 из Internet Explorer 3.01, и выше
DllInstall 4.71 up to but not including 6.0 из Windows Vista
DllRegisterServer 4.70 up to but not including 6.0 из Windows Vista
DllRegisterWindowClasses 4.71 и выше
DllUnregisterServer 4.70 up to but not including 6.0 из Windows Vista
DoAddToFavDlg 4.70 из Windows 95 OSR2, и выше
DoAddToFavDlgW 5.0 и выше
DoFileDownload 4.70 из Windows 95 OSR2, и выше
DoFileDownloadEx 4.70 из Internet Explorer 3.02, и выше
DoOrganizeFavDlg 4.70 из Windows 95 OSR2, и выше
DoOrganizeFavDlgW 5.0 и выше
DoPrivacyDlg 6.0 и выше
DragDrop (140) 5.0 и выше
EnsureWebViewRegSettings (176) 5.0 и выше
FireEvent_Quit (185) 5.0 и выше
GetDefaultInternetSearchUrlA (217) 5.0 и выше
GetDefaultInternetSearchUrlW (216) 5.0 и выше
GetExtensionRecordBlockReason (233) 6.0 из Windows XP SP2 и Windows Server 2003 SP1, и выше
GetExtensionRecords (232) 6.0 из Windows XP SP2 и Windows Server 2003 SP1, и выше
GetLeakDetectionFunctionTable (161) 4.71 и выше
GetLinkInfo (212) 5.0 и выше
GetSearchAssistantUrlA (215) 5.0 и выше
GetSearchAssistantUrlW (214) 5.0 и выше
_GetStdLocation (150) 5.0 и выше
HlinkFindFrame 4.71 и выше
HlinkFrameNavigate 4.70 из Windows 95 OSR2 и выше
HlinkFrameNavigateNHL 4.71 и выше
IEAboutBox 4.70 из Windows 95 OSR2 и выше, only
IEBindToObject (146) 5.0 и выше
IEBindToObjectEx (149) 5.0 из Windows 2000, и выше
IECleanUpAutomationObject (194) 5.0 и выше
IEDDE_NewWindow (197) 5.0 и выше
IEDDE_WindowDestroyed (196) 5.0 и выше
IEGetAttributesOf (145) 5.0 и выше
IEGetDisplayName (148) (189) 5.0 и выше
IEGetNameAndFlags (147) 5.0 и выше
IEILIsEqual (219) 5.0 и выше
IEInvalidateImageList (141) 5.0 и выше
IEIsLinkSafe (226) 5.0 из Windows 2000, и выше
IEMapPIDLToSystemImageListIndex (142) 5.0 и выше
IEOnFirstBrowserCreation (195) 5.0 и выше
IEParseDisplayNameWithBCW (218) 5.0 и выше
IEWinMain (101) 4.70 и выше
IEWriteErrorLog 4.71 up to but not including 6.0 из Windows Vista
ILCreateFromPathCPWithBCA (221) 5.0 и выше
ILCreateFromPathCPWithBCW (222) 5.0 и выше
ILIsWeb (143) 5.0 и выше
ImportPrivacySettings 6.0 и выше
InstallReg_RunDLL 4.70 из Windows 95 OSR2 и выше, only
IsErrorUrl (198) 5.0 и выше
IsFileUrl (135) 5.0 и выше
IsFileUrlW (136) 5.0 и выше
IsIEDefaultBrowser (167) 5.0 и выше
IsResetWebSettingsRequired (224) 5.0 и выше
IsURLChild (153) 5.0 и выше
IURLQualify (172) 5.0 и выше
JITCoCreateInstance (209) 5.0 и выше
NavToUrlUsingIEA (203) 5.0 и выше
NavToUrlUsingIEW (204) 5.0 и выше
OpenPidlOrderStream (139) 5.0 и выше
OpenURL 4.71 и выше
ParseURLFromOutsideSourceA (169) 5.0 и выше
ParseURLFromOutsideSourceW (170) 5.0 и выше
PathIsFilePath (137) 5.0 и выше
PrepareURLForDisplayUTF8W (225) 5.0 из Windows 2000, и выше
RecordExtensionCreation (231) 6.0 из Windows XP SP2 и Windows Server 2003 SP1, и выше
ResetProfileSharing (164) 4.71 и выше
ResetWebSettings (223) 5.0 и выше
RunInstallUninstallStubs (125) 4.71 и выше
RunInstallUninstallStubs2 (130) 4.71 и выше
SafeOpenPromptForPackager (229) 6.0 из Windows XP SP1, и выше
SafeOpenPromptForShellExec (228) 6.0 из Windows XP SP1, и выше
SearchForElementInHead (208) 5.0 и выше
SetQueryNetSessionCount 4.71 и выше
SetShellOfflineState 5.0 и выше
SHAddSubscribeFavorite 4.71 и выше
SHCreateDesktop (119) 4.71 и выше
SHCreateSplashScreen (131) 4.71 и выше
SHDesktopMessageLoop (120) 4.71 и выше
SHDGetPageLocation (187) 5.0 и выше
ShellDDEInit (118) 4.71 и выше
SHGetHistoryPIDL (192) 5.0 и выше
SHGetIDispatchForFolder 4.71 и выше
SHGetViewStream (200) 5.0 и выше
SHIEErrorMsgBox (188) 5.0 и выше
SHIsGlobalOffline (174) 5.0 и выше
SHIsRegisteredClient (191) 5.0 и выше
SHIsRestricted (173) 5.0 и выше
SHIsRestricted2W (160) 5.0 и выше
SHMapNbspToSp (183) 5.0 и выше
ShowUrlInNewBrowserInstance (230) 6.0 из Windows XP SP2, и выше
SHRestricted2A (158) 4.71 и выше
SHRestricted2W (159) 4.71 и выше
SHRunIndirectRegClientCommand (190) 5.0 из before Windows 2000; 5.50 и выше
SHUseClassicToolbarGlyphs (227) 6.0 и выше
SoftwareUpdateMessageBox 4.71 и выше
StopWatch (123) 4.71 и выше
StopWatchFlush (122) 4.71 и выше
StopWatchMode (121) 4.71 и выше
UrlHitsNetW (210) 5.0 и выше
URLQualifyA 4.70 и выше
URLQualifyW 4.70 и выше
URLSubLoadString (138) 5.0 и выше
URLSubRegQueryA (151) 4.71 и выше
URLSubstitution (150) 4.71 и 4.72
URLSubstitution (165) 5.0 и выше
UseCustomInternetSearch (213) 5.0 и выше
WhichPlatform (104) 4.71 и выше
WinList_FindFolderWindow (178) 5.0 и выше
WinList_GetShellWindows (179) 5.0 и выше
WinList_Init (110) 4.71 и выше
WinList_NotifyNewLocation (177) 5.0 и выше
WinList_RegisterPending (180) 5.0 и выше
WinList_Revoke (181) 5.0 и выше
WinList_Terminate (111) 4.71 и выше
unknown (220) 5.0 и 5.50

Dynamic Data Exchange

Динамический обмен данными (Dynamic Data Exchange, DDE) — это функция Windows, которая позволяет приложениям Windows взаимодействовать друг с другом. DDE основан на системе обмена сообщениями, встроенной в Windows. Две Windows-программы могут вести DDE-«беседу», отправляя сообщения друг другу. Эти две программы известны как «сервер» и «клиент». DDE-сервер - программа, которая имеет доступ к данным, которые могут быть полезны для других Windows-программ. DDE-клиент - программа, получающая эти данные с сервера. [2]

24 августа 2014 г. был импортирован код основы DDE из trunk.

29 сентября 2014 г. была начата работа над ним.

Протестировав и отладив компонент в Windows, Gigaherz добавил его в Shell32.dll и протестировал в ReactOS.

Из-за ошибок в Win32k DDE в ReactOS работает плохо, и поэтому разработчик пока прервал над ним работу, пока их не исправят. [3]

IPC

IPC - механизм оболочки, необходимый для открытия новых окон проводника в существующем процессе explorer.exe. На 28 сентября 2014 г. данная функция реализована. [4]

CORE-12577 - отключение IPC через реестр

CBaseBar.png

Боковая панель

3 декабря 2014 г. была начата реализация класса CExplorerBand, который необходим для отображения боковой панели. Gigaherz добавил этот класс, чтобы исследовать, как реализуется боковая панель в оболочке Windows.

5 февраля 2016 г. был опубликован патч (CORE-10838) начальной реализации классов BaseBar и CBaseBarSite (см. схему).

19 февраля Sylvain Deverre начал работу над боковой панелью в github-репозитории.

30 мая в rr71459-71465 наработки из ветви были добавлены в транк.

1 июня в rr71471-71475 была релизована боковая панель.

26 июля в r72003 было реализовано разворачивание списка до текущей папки и в r72004 - отображение контекстного меню в панели "Папки".

2 августа в боковой панели было реализовано отображение имени диска.

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

Обработка аргументов командной строки

8 сентября 2014 г. была написана основа парсера параметров командной строки, которые используются проводником Windows.

Команды см. на сайте поддержки Microsoft.

Отчет CORE-12163 был закрыт 7 ноября 2016 года.

На данный момент проводник поддерживает параметры:

  • /separate
  • /e
  • /select

Рабочий стол

5 февраля 2017 года было реализовано автоматическое обновление рабочего стола после изменения его содержимого.

Скрытие значков рабочего стола

Панель задач

15 мая 2014 г. начата работа над панелью задач.

Taskbar.png

На 31 июля 2017 г.:

  • отображается список окон
  • левым кликом окна можно свернуть/развернуть
  • правым кликом отображается и работает список действий над окном
  • окна нельзя перемещать в списке
  • реализовано автоскрытие панели задач

(т.к. на данный момент диалог настройки панели задач не реализован, автоскрытие настраивается в реестре. Для включения данной функции, необходимо установить значение HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2 на 1.)[5]

  • добавлено пустое место между кнопками на панели задач

В r75446 было реализовано изменение панели задач на определенный размер.

Область уведомлений в explorer_new

Настройка панели задач

14 апреля 2017 года Robert Naumann начал реализацию сохранения/загрузки настроек панели задач (CORE-11498).

1 ноября, в ревизии 2ed535d (0.4.8-dev-46) Яннис Адамопулос реализовал некоторые настройки панели задач (закрепить, отобразить поверх других окон, автоматически скрывать, отображать часы, отображать секунды). Остальное будет реализовано позднее.

  • CORE-14318 - Реализация пункта "Показать рабочий стол"

Область уведомлений

Notification balloons.png

5 июля 2014 г. была реализована область уведомлений. На текущий момент:

  • в трее отображаются значки программ
  • при клике левой кнопкой мыши по значку программа сворачивается/разворачивается
  • при клике правой кнопкой мыши по значку отображается меню
  • скрытие неиспользуемых значков не реализовано

  • Управление отображением значков в области уведомлений - PR-418, CORE-10849

Объекты службы оболочки

Диалог настройки звука

Объекты службы оболочки (Shell service objects) - компонент, отвечающий за отображение в системном трее регулятора громкости, значка батареи, диалога отключения USB-устройства, и др. Работа над ним была начата 23 июля.

На 17 августа 2014 г. был реализован базовый функционал.

Дальнейшая работа

23-24 марта 2017 года Эрик Коль сделал следующие реализации:

  • r74225 - начальная реализация кода для скрытия/отображения значков питания и звука
  • r74226 - скрытие/отображение значка питания
    • r74228 - выбор схемы питания в значке
  • r74227 - реализация скрытия/отображения значка звука

25-фев-2018 40bd09a - Реализация диалога настройки звука из трея

Адресная строка

4 мая 2014 г. начата работа над адресной строкой.

Shell-adress.png

На 25 августа 2016 г.:

  • реализовано:
    • отображение пути текущей папки
    • значок
    • поддержка распознавания ввода
    • вместо GUID/CLSID пути отображается имя системной папки
    • ввод адреса с нажатием Enter
    • автоизменение размера адресной строки
    • выпадающий список[6]
Shell adresslist.png

CLSID

О нереализованных CLSIDs:

  • Компьютеры в сети - в Windows XP открывает "результаты поиска компьютеров".
  • Запланированные задания - открывает соответствующую папку.

Другие CLSIDs отсутствуют в NT5.

Цвет и значение
Не функционирует
Реализовано
Отсутствует в Windows XP
CLSID
Администрирование
Портфель
Панель управления
Шрифты
История
Входящие
MS Network
Мой компьютер
Мои документы
Сетевое окружение
Компьютеры в сети
Сетевые подключения
Принтеры и факсы
Программы
Корзина
Сканеры и камеры
Запланированные задания
папка Пуск
Temporary Internet Files
Web Folders

Строка меню

Горизонтальное меню в explorer new.png

На 29 октября 2014 г.:

  • нереализованные пункты отображаются как неактивные
  • при нажатии разворачиваются все пункты меню
  • написаны ​​контекстное меню для элементов оболочки
  • реализована навигация с помощью клавиатуры на вертикальных всплывающих меню и горизонтальной панели меню
    • реализован выбор первого и последнего пункта кнопками home и end
    • автоматический выбор первого пункта при открытии подменю с помощью клавиатуры.

В отличие от прочих пунктов меню, которые инициализируются только один раз, меню "файл" каждый раз очищается и к нему добавляются элементы из текущего выбора. В Windows, для этого, существует специальная функция, которая собирает доступные действия для текущего выбора, и строит специальное меню из этих элементов. Поскольку данная функция отсутствует, в меню отображается контекстное меню. В будущем эта функция будет усовершенствованна, но на данный момент, она выполняет поставленную задачу.

Отсутствует

  • CORE-11467 - логотип ReactOS в строке меню

Реализация пунктов подменю

На 5 февраля 2017 г.:

Цвет и значение
Не функционирует
Реализовано
Меню
Файл Закрыть
Правка Отменить
Вырезать
Копировать
Вставить
Вставить ярлык
Копировать в
Переместить в
Выделить все
Обратить выделение
Вид Панели инструментов
Строка состояния
Панели обозревателя
Размеры значков
Переход
Обновить
Избранное Добавить в избранное
Упорядочить избранное
Сервис Подключить сетевой диск
Отключить сетевой диск
Синхронизировать
Свойства папки
Справка Легальна ли эта копия ReactOS?
О ReactOS
Свойства папки
File-options.png
  • CORE-10837 - Невозможно запустить Свойства папки из-за отсутствия класса
  • CORE-11141 - Свойства папки не реализованы
  • CORE-10800 - Улучшения диалога свойств папки
  • CORE-12906 - Изменение или создание файловых ассоциаций не реализовано
  • CORE-12540 - реализация отображения параметров папки

5 февраля 2017 года в ревизии r73703 был реализован диалог со всеми доступными, на данный момент, настройками.

Копировать в / Переместить в

18 апреля 2016 года Barrett Karish опубликовал патч с реализацией данной функции.

Подключить/отключить сетевой диск

3 июля 2017 года Jared Smudde начал реализацию библиотеки netplwiz.dll, выполняющей данную функцию.

Pusk.png

Меню "Пуск"

На 24 июня 2014 г. в "Пуске" скрыт пункт "Поиск" до реализации данной функции.

16 июля 2016г. была реализована команда "открыть общее меню пуск".

Classicconf.png

В настоящее время, в меню "пуск" работают:

  • выключение
  • завершение сеанса
  • запуск
  • настройки
  • программы
  • справка и поддержка (URL ссылка на сайт проекта)

  • CORE-12158 - "Стандартное" меню пуск

Настройка меню Пуск

  • 21 ноября 2015 года в ревизии r69992 была начата реализация диалога настройки классического меню "Пуск".
  • 22 ноября 2015 года в ревизии r70001 были реализованы кнопки:
    • Add (Добавить) > Открывает мастер создания ярлыков
    • Advancad (Дополнительно) > Открывает %username%/Главное меню
    • Clear (Очистить) > Очищает %username%/Recent (Пуск>Недавнее) [Которое обычно так и не заполняется]

Диалог завершения работы

Shell-poweroff.png

29 сентября 2014 г. в shell-experiments был применен патч нового диалога завершения работы с вариантами "Завершение работы", "Перезагрузка" и "Выход из системы".

ShellBag

Информация ShellBag представляет собой набор подразделов в пользовательском разделе реестра (в файлах Ntuser.dat и usrclass.dat), используемого в операционной системе Windows, для отслеживания настроек вида окон пользователя. Это делается посредством сохранения различных рапаметров Windows Explorer, относящихся к размерам окон, их настройкам и т.д. Это позволяет загружать к вновь открытой папке параметры, примененные в прошлый раз. У каждого пользователя свои собственные настройки для папок, и, следовательно, они хранятся в соответствующем пользовательском разделе.[7]

CORE-9283

Дополнительные возможности

Диалог копирования файлов

Copydialog.png

Работа над диалогом копирования была начата в ноябре 2014 года. (CORE-4476)

  • По состоянию на 23-фев-2015 г. диалог реализован, но без анимации.
  • 23 апреля 2015 г. была добавлена анимация

Отображение скрытых файлов

Реализация данной возможности была начата 17-февраля-2015 года и 14-марта-2015 завершена. (CORE-9207)

Как отображать скрытые файлы см здесь.

Расширения оболочки

Обзор реестра и NT-объектов

15 марта 2015г. была реализована замена обзору реестра и NT-объектов из старого проводника в качестве расширений оболочки. (CORE-9244)

Reg new.png NTObj new.png

Виртуальные рабочие столы

Предположительно, планируется реализовать функцию, известную по старому проводнику, в качестве расширения оболочки.

Улучшение поддержки расширений оболочки

Расширения пространства имен

  • Переписывание реализации системных папок оболочки (CORE-7585)
Zipfolders.png
Zip-папки

Данное расширение было реализовано 7-апр-2018.

Расширения для панели задач

Разрабатываются в рамках GSoC (панель быстрого запуска, состояние батареи и извлечение USB-устройства).

18 августа 2017 года в транке, в r75611 было добавлено расширение извлечения USB-устройства.

  • CORE-13841 - реализация извлечения CD/DVD/USB
Панель быстрого запуска

20 октября было добавлено расширение панели быстрого запуска.

Quikstartpanel.png

На текущий момент (26 октября 2017) панель быстрого запуска добавляется автоматически (если вы сделаете пкм> панели инструментов> быстрый запуск), только она пуста. Нужно наполнить ярлыками каталог C:\Documents and Settings\%username%\Application Data\Microsoft\Internet Explorer\Quick Launch.

Кроме того, ее можно добавить вручную:

  • создайте каталог (Например, C:\Documents and Settings\Administrator\Быстрый запуск) и скопируйте в него необходимые ярлыки
  • кликните по панели пкм> панели инструментов> Создать панель инструментов> укажите созданную вами папку

Панель создастся справа. Переместить нормально влево ее нельзя (пока). Ярлыки запускаются. Можно скрыть/показать надписи, заголовок, закрыть панель. Можно ее уменьшить, но скрытые значки не разворачиваются (пока). Не без багов: меняешь панель местами с задачами, начинает дурить панель.

  • 6 ноя 2017 Станислав Мотыльков реализовал отображение ошибки при невозможности создания панели.
    • а 11 ноя 2017 добавил пункт "открыть каталог"

Стрелки сортировки

13 июля в оболочке были реализованы сортировочные стрелки в списке.

Горячие клавиши

Цвет и значение
Не функционирует
Реализовано
Не проверялось
Отсутствуют в Windows XP (или только в програмах)
Hotkeys
CTRL
CTRL + A
CTRL + C
CTRL + F
CTRL + G
CTRL + N
CTRL + O
CTRL + P
CTRL + S
CTRL + V
CTRL + X
CTRL + Z
CTRL + F4
CTRL + while dragging an item
CTRL + SHIFT with arrow keys
CTRL + ESC
CTRL + F6
ALT
ALT+ENTER
ALT+F4
ALT+SPACEBAR
ALT+TAB
ALT+ESC
FUN
F1
F2
F3
F4
F5
F6
F10
WIN
Windows Logo
Windows Logo+BREAK
Windows Logo+D
Windows Logo+M
Windows Logo+SHIFT+M
Windows Logo+E
Windows Logo+F
CTRL+Windows Logo+F
Windows Logo+F1
Windows Logo+ L
Windows Logo+R
Windows Logo+U
dialogue
TAB
SHIFT+TAB
CTRL+TAB
CTRL+SHIFT+TAB
ALT+Underlined letter
ENTER
SPACEBAR
F1
F4
Arrow keys
BACKSPACE
Explorer
END
HOME
NUM LOCK+Asterisk sign (*)
NUM LOCK+Plus sign (+)
NUM LOCK+Minus sign (-)
LEFT ARROW
RIGHT ARROW

Меню у объектов, перетаскиваемых при зажатой правой кнопке мыши

  • 5bef945 - Добавлены строки ресурсов
  • 8f8ab05 - Реализция GetItemPosition, SelectAndPositionItems, IsDropOnSource, GetDragPoint
  • 6d91269 - Начальная реализация меню

Прочие классы

Работа CMergedFolder на примере "Пуска"

CMergedFolder

Классовая структура CMergedFolder - набор классов, основная цель которых - объединение содержимого нескольких папок оболочки в один виртуальный каталог, который включает элементы из всех источников, а также объединение дочерних элементов папок с одинаковым именем в один виртуальный пункт.

Работа над ней была начата 28 июня 2014 г., и на 13 июля 2014 г. она полностью реализована.

Используется в таких меню как:

Программы

CMergedFolder позволяет меню пуск отображать ярлыки программ в:

  • меню "Программы": из обоих каталогов с программами: общего и пользовательского (содержимое папок %userprofile%/Главное меню/Программы и All Users/Главное меню/Программы).
  • меню пуск (содержимое папок %userprofile%/Главное меню и All Users/Главное меню)

Избранное

CMergedFolder позволяет меню избранное отображать содержимое папки %userprofile%/Избранное.

Недавние документы

CMergedFolder позволяет меню пуск отображать пункт "Документы" (содержимое папки %userprofile%/Recent)

CFocusManager

Этот класс необходим для определения и установки областей фокуса и для установки элементов, имеющих фокус на панели меню. Работа над ним была начата вместе со строкой меню.

CShellDispatch

Класс CShellDispatch реализует объекты IShellDispatch v1-6. Т.к. ReactOS стремится к совместимости с Windows Server 2003, то в ней будут реализованы (CORE-6892) v1-4.

Код IShellDispatch2 планируется взять из Wine, перевести на C++, добавить в ReactOS и дописать.

В shldisp.idl также отсутствуют IShellDispatch3 и IShellDispatch4 (а так же v5 и 6, но они не относятся к Windows Server 2003). Они и написанные для них тесты позже будут отправлены в Wine.

Первые коммиты были внесены в ревизиях r71116 и 71117.

  • CORE-12955 - реализация:
    • ShellExecute - открывает или выводит на печать указанный файл. Файл может быть исполняемым файлом или файлом документа[8]
    • IsServiceRunning - возвращает значение, указывающее, запущен ли конкретный сервис[9]
  • 2 апреля 2017 в ревизии r74268 был реализован объект ShutdownWindows - отображающий диалог завершения работы

PaintMenuBar

31 марта 2017 года Янисом был добавлен прототип функции PaintMenuBar, которая отрисовывает градиент и текст сбоку от меню (например, пуск).

Список задач

DirectUI (из 2k3 и xp) не будет реализован из-за недокументированности компонента. (CORE-11401)

Разработчики планируют реаизовать Vista+-интерфейсы IExplorerCommand / ExplorerCommandProvider в качестве замены DirectUI. (CORE-14175)

Темы в новом проводнике

  • 27 авг 2017 - исправлена поддержка альфа-каналов в темах (CORE-13464, r75688)

Пакет тем см. в Сторонние компоненты.

Настройки через реестр

В ReactOS реализованы некоторые настроки, аналогичные Windows. Их можно изменить как через графический интерфейс, так и через реестр. Для этого следующим параметрам нужно поменять значение (1 - вкл, 0 - выкл) и перезапустить проводник:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\

  • Hidden - показать скрытые файлы и папки
  • HideFileExt - скрыть расширение файлов
  • ListviewShadow - тени у подписей значков на рабочем столе
  • StartMenuLogoff - пункт завершение сеанса в "Пуск"

Скачать сборки

26 ноября 2014 наработки Shell-experiments влиты в транк в ревизии 65496.

Ссылки

ReactOS
Search.png
Доклады
О ReactOSARWINSSЧеЗа
Информация Новости Выпуски новостейПереводы блоговНовости проектаВидеоReactOS на ХабреUSB от Вадима Галянта
Разработка Руководство по программированиюОтсутствующая функциональностьВетви разработкиКомпоненты системыReactOS и WineПлан работРазработчикиСовместимость с dll WindowsНаиболее значимые изменения за годИспользуемые проектыGoogle Summer of CodeИзвестные проблемы
Порты AMD64ARMXboxPowerPC
Компоненты Файловые системыРежим совместимостиОтчеты об ошибкахПечатьUSBЯдро
Загрузчик Восстановление MBRЗагрузка из GRUBПараметры загрузки
Прочее ARWINSSПриложения в ReactOSОформление ReactOSКоординаторы"Пасхальные яйца"Монетизация
Другое Типы ядерFreeWin95
Помощь
RAM-диск ReactOS по PXEс жесткого диска
Разработка Стиль написания кодаСтандарты RC-файловРабота с документациейВенгерская нотацияGNU Indent • [ Subversion : ветвислияниеиспользование TortoiseSVN ] • Основы переводаОтправка патчей
Репорты Отладка в VirtualBoxОтладка на экранДобавление программы в менеджер приложенийОтправка отчетов
Отладка Com0comGDBKdbgRossym.gdbRoswin.gdbWinDBGРуководство по WinDBGВключение трассировки ядраКоды DPRINTУдалённый отладчик ReactOS
Сборка CMakeRBuildФайлы RBuildАвтоматическое копирование файловСборка MINGW-w64Сборка модулейСреда сборки
Тестирование VirtualBoxVMwareQEMUHyper-VНеобходимый объём дискаПеренос файлов на виртуальный дискУстановка ReactOSУстановка драйверов
Сеть Общие папкиSambaNFS
Игры Установка DirectPlay
Обновление ReactOSЗагрузочная флешкаЧем можно помочь проектуСоздание нового пользователяЗвук и сеть в VirtualBoxСъемка и публикация видеоIRC-каналСторонние компонентыFAQ
Обзоры ОболочкаNTVDMWOWCommunity Edition