ROS Shell
Оболочка в ReactOS
На данной странице описана история оболочки ReactOS, ее текущее состояние и запланированные возможности.
История разработки
Начало
Первое время в ReactOS не было графической оболочки. Она была реализована в выпуске 0.2, Мартином Фуксом, при чем реализована неправильно с точки зрения ее программной архитектуры. В ReactOS, кроме этого проводника есть еще один - explorer_new. В идеале он должен по функциональности быть аналогичным проводнику Windows, но для нормальной работы ему была необходима библиотека Shell32.dll.
Работу над новой оболочкой начал Томас Блюмел (Thomas Bluemel), в качестве прототипа он выбрал оболочку Windows 2003 и провёл большую работу по разграничению функциональности между Explorer и Shell32. Но из-за отсутствия Shell32, новая версия Explorer ещё не работала. Позднее Эндрю Хилл (Andrew Hill) перевел shell32 на C++, а также создал библиотеку browseui.dll, которая необходима проводнику для отображения файлового браузера[1][2].
Первым большим шагом в разработке Shell32 был контракт, заключённый с Яннисом Адамопулосом (Giannis Adamopoulos) на доработку библиотеки shell32. По завершении контракта explorer_new может запускаться в ReactOS и позволяет пользователю просматривать информацию. Так же Яннис изучил инфраструктуру поддержки оболочки и написал на нее документацию.
После контракта с Яннисом
Позже, 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
На данной схеме визуально отмечены компоненты Shell32.
Нереализованные возможности
не реализовано | начата работа |
- динамический обмен данными (DDE)
Отчеты о оболочке в багтеркере
- Задачи по разработке оболочки CORE-5620
- Основные нереализованные возможности CORE-9277
- Переписывание кэша значков и извлечения значков (CORE-7563)
Реорганизация ресурсов оболочки
В рамках своей работы (CORE-10030) Robert Naumann:
- переработал диалоги свойств, сделав их лучше, добавил недостающие ресурсы и удалил ненужные
- заменил значок меню Пуск растровым
- исправил существующие значки и добавил недостающие (
CORE-9240) - реорганизовал структуру ресурсов папок
Компоненты
Browseui.dll
На 13 июля 2017 г.:
- отображается содержимое текущей папки
- в заголовке окна отображается значок папки
- отображаются кнопки
- у кнопок появились значки
- в режиме списка были реализованы сортировочные стрелки
Реализация кнопок
Кнопки в панели инструментов браузера файлов можно разделить на 4 группы:
- Навигационные кнопки, с историей назад / вперед и «вверх»,
- Кнопки боковой панели "папки" и "поиск"
- Операции с файлами, "копировать в", "переместить в", "удалить" и "отменить".
- Режим просмотра
Работают:
- навигация
- изменение размера значков
- папки и поиск
- копировать в/переместить в
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-клиент - программа, получающая эти данные с сервера. [3]
24 августа 2014 г. был импортирован код основы DDE из trunk.
29 сентября 2014 г. была начата работа над ним.
Протестировав и отладив компонент в Windows, Gigaherz добавил его в Shell32.dll и протестировал в ReactOS.
Из-за ошибок в Win32k DDE в ReactOS работает плохо, и поэтому разработчик пока прервал над ним работу, пока их не исправят. [4]
IPC
IPC - механизм оболочки, необходимый для открытия новых окон проводника в существующем процессе explorer.exe. На 28 сентября 2014 г. данная функция реализована. [5]
CORE-12577 - отключение IPC через реестр
Боковая панель
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 года было реализовано элементарное перетаскивание значков.
Поиск
В 2019 году, в рамках GSoC был реализован поиск по файлам.[6]
Обработка аргументов командной строки
8 сентября 2014 г. была написана основа парсера параметров командной строки, которые используются проводником Windows.
Команды |
---|
Explorer [/n] [/e] [,/root,(object)] [[,/select],(sub object)] /n: открытие нового окна с одной панелью; /e: стандартный запуск программы Проводник в текущей папке; /root,(object): открытие окна с указанным корневым уровнем; /Select,папка: указание папки, которую следует выделить при запуске программы Проводник; /select,(имя файла): указание файла, которого следует выделить. |
Отчет CORE-12163 был закрыт 7 ноября 2016 года.
На данный момент проводник поддерживает параметры:
- /separate
- /e
- /select
Рабочий стол
5 февраля 2017 года было реализовано автоматическое обновление рабочего стола после изменения его содержимого.
Скрытие значков рабочего стола
На 10.08.2023 реализован диалог скрытия значков рабочего стола.
Панель задач
15 мая 2014 г. начата работа над панелью задач.
На 10 августа 2023 г.:
- отображается список окон
- левым кликом окна можно свернуть/развернуть
- правым кликом отображается и работает список действий над окном
- окна нельзя перемещать в списке
- реализовано автоскрытие панели задач (Дополнительно, для включения данной функции можно установить значение HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2 на 1.)[7]
- добавлено пустое место между кнопками на панели задач
- реализована кнопка "Показать рабочий стол" (а-ля Windows 7) (
CORE-14318) - реализовано сохранение положения панели задач[8]
В r75446 было реализовано изменение панели задач на определенный размер.
Настройка панели задач
14 апреля 2017 года Robert Naumann начал реализацию сохранения/загрузки настроек панели задач (CORE-11498).
1 ноября, в ревизии 2ed535d (0.4.8-dev-46) Яннис Адамопулос реализовал некоторые настройки панели задач (закрепить, отобразить поверх других окон, автоматически скрывать, отображать часы, отображать секунды). Остальное будет реализовано позднее.
Область уведомлений
5 июля 2014 г. была реализована область уведомлений. На текущий момент:
- в трее отображаются значки программ
- при клике левой кнопкой мыши по значку программа сворачивается/разворачивается
- при клике правой кнопкой мыши по значку отображается меню
- скрытие неиспользуемых значков не реализовано
- 24-01-2018 David Quintana реализовал элементарное управление uVersion, и "пузыри уведомлений".
- Управление отображением значков в области уведомлений - PR-418, CORE-10849
23 марта 2019 года была реализована всплывающая подсказка с датой.
Объекты службы оболочки
Объекты службы оболочки (Shell service objects) - компонент, отвечающий за отображение в системном трее регулятора громкости, значка батареи, диалога отключения USB-устройства, и др. Работа над ним была начата 23 июля.
На 17 августа 2014 г. был реализован базовый функционал.
Дальнейшая работа
23-24 марта 2017 года Эрик Коль сделал следующие реализации:
- r74225 - начальная реализация кода для скрытия/отображения значков питания и звука
- r74226 - скрытие/отображение значка питания
- r74228 - выбор схемы питания в значке
- r74227 - реализация скрытия/отображения значка звука
25-фев-2018 40bd09a - Реализация диалога настройки звука из трея
2019:
- добавлен диалог громкости динамиков[9]
- при изменении громкости теперь воспроизводится звук Default[10]
- реализован регулятор громкости для окна трея[11]
- добавлен чекбокс отключения звука
- реализован трекбар громкости и баланса для стерео и моно
Адресная строка
4 мая 2014 г. начата работа над адресной строкой.
На 10 августа 2023 г.:
- реализовано:
CLSID
О нереализованных CLSIDs:
- Компьютеры в сети - в Windows XP открывает "результаты поиска компьютеров".
- Запланированные задания - открывает соответствующую папку.
Другие CLSIDs отсутствуют в NT5.
Цвет и значение |
---|
Не функционирует |
Реализовано |
Отсутствует в Windows XP |
CLSID |
---|
Администрирование |
Портфель |
Панель управления |
Шрифты |
История |
Входящие |
MS Network |
Мой компьютер |
Мои документы |
Сетевое окружение |
Компьютеры в сети |
Сетевые подключения |
Принтеры и факсы |
Программы |
Корзина |
Сканеры и камеры |
Запланированные задания |
папка Пуск |
Temporary Internet Files |
Web Folders |
Строка меню
На 29 октября 2014 г.:
- нереализованные пункты отображаются как неактивные
- при нажатии разворачиваются все пункты меню
- написаны контекстное меню для элементов оболочки
- реализована навигация с помощью клавиатуры на вертикальных всплывающих меню и горизонтальной панели меню
- реализован выбор первого и последнего пункта кнопками home и end
- автоматический выбор первого пункта при открытии подменю с помощью клавиатуры.
В отличие от прочих пунктов меню, которые инициализируются только один раз, меню "файл" каждый раз очищается и к нему добавляются элементы из текущего выбора. В Windows, для этого, существует специальная функция, которая собирает доступные действия для текущего выбора, и строит специальное меню из этих элементов. Поскольку данная функция отсутствует, в меню отображается контекстное меню. В будущем эта функция будет усовершенствованна, но на данный момент, она выполняет поставленную задачу.
Отсутствует
- CORE-11467 - логотип ReactOS в строке меню
Реализация пунктов подменю
На 10 августа 2023 г.:
- добавлен пункт "обновить"
Цвет и значение |
---|
Не функционирует |
Реализовано |
Меню | |
---|---|
Файл | Закрыть |
Правка | Отменить |
Вырезать | |
Копировать | |
Вставить | |
Вставить ярлык | |
Копировать в | |
Переместить в | |
Выделить все | |
Обратить выделение | |
Вид | Панели инструментов |
Строка состояния | |
Панели обозревателя | |
Размеры значков | |
Переход | |
Обновить | |
Избранное | Добавить в избранное |
Упорядочить избранное | |
Сервис | Подключить сетевой диск |
Отключить сетевой диск | |
Синхронизировать | |
Свойства папки | |
Справка | |
О ReactOS |
Свойства папки
CORE-10837- Невозможно запустить Свойства папки из-за отсутствия классаCORE-11141- Свойства папки не реализованы- CORE-10800 - Улучшения диалога свойств папки
CORE-12906- Изменение или создание файловых ассоциаций не реализованоCORE-12540- реализация отображения параметров папки
5 февраля 2017 года в ревизии r73703 был реализован диалог со всеми доступными, на данный момент, настройками.
Копировать в / Переместить в
18 апреля 2016 года Barrett Karish опубликовал патч с реализацией данной функции.
Подключить/отключить сетевой диск
3 июля 2017 года Jared Smudde начал реализацию библиотеки netplwiz.dll, выполняющей данную функцию.
23 апреля 2019 года в строку меню была добавлена функция отключения сетевого диска.
Меню "Пуск"
На 24 июня 2014 г. в "Пуске" скрыт пункт "Поиск" до реализации данной функции.
16 июля 2016г. была реализована команда "открыть общее меню пуск".
В настоящее время, в меню "пуск" работают:
- выключение
- завершение сеанса
- запуск
- настройки
- программы
- справка и поддержка (URL ссылка на сайт проекта)
- CORE-12158 - "Стандартное" меню пуск
Настройка меню Пуск
- 21 ноября 2015 года в ревизии r69992 была начата реализация диалога настройки классического меню "Пуск".
- 22 ноября 2015 года в ревизии r70001 были реализованы кнопки:
- Add (Добавить) > Открывает мастер создания ярлыков
- Advancad (Дополнительно) > Открывает %username%/Главное меню
- Clear (Очистить) > Очищает %username%/Recent (Пуск>Недавнее) [Которое обычно так и не заполняется]
Диалог завершения работы
29 сентября 2014 г. в shell-experiments был применен патч нового диалога завершения работы с вариантами "Завершение работы", "Перезагрузка" и "Выход из системы".
ShellBag
Информация ShellBag представляет собой набор подразделов в пользовательском разделе реестра (в файлах Ntuser.dat и usrclass.dat), используемого в операционной системе Windows, для отслеживания настроек вида окон пользователя. Это делается посредством сохранения различных рапаметров Windows Explorer, относящихся к размерам окон, их настройкам и т.д. Это позволяет загружать к вновь открытой папке параметры, примененные в прошлый раз. У каждого пользователя свои собственные настройки для папок, и, следовательно, они хранятся в соответствующем пользовательском разделе.[14]
Дополнительные возможности
Диалог копирования файлов
Работа над диалогом копирования была начата в ноябре 2014 года. (CORE-4476)
- По состоянию на 23-фев-2015 г. диалог реализован, но без анимации.
- 23 апреля 2015 г. была добавлена анимация
Отображение скрытых файлов
Реализация данной возможности была начата 17-февраля-2015 года и 14-марта-2015 завершена. (CORE-9207)
Как отображать скрытые файлы см здесь.
Расширения оболочки
Обзор реестра и NT-объектов
15 марта 2015г. была реализована замена обзору реестра и NT-объектов из старого проводника в качестве расширений оболочки. (CORE-9244)
Виртуальные рабочие столы
Предположительно, планируется реализовать функцию, известную по старому проводнику, в качестве расширения оболочки.
Улучшение поддержки расширений оболочки
Расширения пространства имен
- Переписывание реализации системных папок оболочки (CORE-7585)
Zip-папки
Данное расширение было реализовано 7-апр-2018.
28 февраля 2019 года была добавлена поддержка архивов с паролями.
Расширения для панели задач
Разрабатываются в рамках GSoC (панель быстрого запуска, состояние батареи и извлечение USB-устройства).
18 августа 2017 года в транке, в r75611 было добавлено расширение извлечения USB-устройства.
CORE-13841- реализация извлечения CD/DVD/USB
Панель быстрого запуска
20 октября было добавлено расширение панели быстрого запуска.
На текущий момент (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 - Начальная реализация меню
Фон у проводника
04 апреля 2019 года был реализован фон у проводника ReactOS. Для создания фона у папки необходимо поместить в нее файл изображения и *.ini-файл со следующим содержимым:
[{BE098140-A513-11D0-A3A4-00C04FD706EC}] IconArea_Image=ros.png IconArea_Text=0x4B0082 IconArea_TextBackground=0xB048B5
Где
- IconArea_Image - фон
- IconArea_Text - цвет текста
- IconArea_TextBackground - фон текста
Автодополнение
На июль 2021 года функция реализована, но есть две проблемы:
- Если пользователь набирал текст быстрее, чем очередь сообщений, автодополнение работать не будет.
- Автодополнение для большого количества файлов (10000+) не будет работать.
Прочие классы
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 - реализация:
- 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.