Додавання меню, що розкривається в контекстне меню робочого столу і комп'ютера

Створення меню, що розкривається з декількома рівнями укладення

Вище я продемонстрував, як створити спливаюче меню зі списком пунктів. Ці пункти теж можна зробити розкриваються, тобто можливе створення вкладених меню, як показано на малюнку нижче:

Додавання меню, що розкривається в контекстне меню робочого столу і комп'ютера

Як бачите, в меню є пункт «Диск», який в свою чергу розкриває меню з утилітами для обслуговування диска. Він відділений від інших пунктів роздільником, хоча це не дуже добре видно на малюнку, оскільки пункт виділений. Далі я розповім, як створити таке меню на основі вже викладеного вище матеріалу.

У розділі реєстру HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ CommandStore \ Shell створіть ярлики для двох нових пунктів (Дефрагментація диска і Очищення диска), слідуючи інструкціям в розділі статті «Реєстрація команд в реєстрі». Я назвав підрозділи defrag і cleanmgr.

У тому ж розділі реєстру створіть підрозділ disk-menu (назва може бути будь-яким). Далі все буде дуже схоже на те, що ви проходили в першому розділі статті.

У підрозділі disk-menu створіть строкові параметри:

  • MUIVerb для назви меню, наприклад, зі значенням Диск
  • Icon для значка меню, наприклад зі значенням imageres.dll, 31
  • SubCommands для ярликів цього меню (в даному випадку зі значенням defrag; cleanmgr)

Якщо ви хочете використовувати роздільник, створіть параметр REG_DWORD з ім'ям CommandFlags і шістнадцятковим значенням:

  • 20 для розміщення роздільник над пунктом меню
  • 40 для розміщення роздільник під пунктом меню

Я задав значення 40, оскільки планую зробити меню першим пунктом і відокремити його від інших.

У реєстрі повинна вийти така картина:

Додавання меню, що розкривається в контекстне меню робочого столу і комп'ютера

Вкладене меню готове, і залишилося лише вказати на нього посилання в батьківському меню, як було описано в розділі статті «Створення меню, що розкривається і додавання в нього пунктів». Слідуючи за моїм прикладом, в розділі

параметр SubCommands повинен прийняти такий вигляд:

Якщо ви заплуталися або у вас щось не виходить, видаліть створені розділи і параметри, а потім імпортуйте наведений нижче REG-файл.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ CLSID \\ shell \ Menu1]
"MUIVerb" = "Система"
"SubCommands" = "disk-menu; regedit; taskmgr; devmgr"
"Icon" = "imageres.dll, 104"
"Position" = "Bottom"

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ CommandStore \ shell \ taskmgr]
@ = "Диспетчер завдань"
"Icon" = "taskmgr.exe"

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ CommandStore \ shell \ devmgr]
@ = "Диспетчер пристроїв"
"Icon" = "devmgr.dll, 4"

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ CommandStore \ shell \ devmgr \ command]
@ = Hex (2): 25,00,53,00,79,00,73,00,74,00,65,00,6d, 00,52,00,6f, 00,6f, 00,74,00 , 25, \
00,5c, 00,73,00,79,00,73,00,74,00,65,00,6d, 00,33,00,32,00,5c, 00,6d, 00,6d, 00, \

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ CommandStore \ shell \ cleanmgr]
@ = "Очищення диска"
"Icon" = "cleanmgr.exe"

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ CommandStore \ shell \ defrag]
@ = "Дефрагментація диска"
"Icon" = "dfrgui.exe"

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ CommandStore \ shell \ disk-menu]
"MUIVerb" = "Диск"
"Icon" = "imageres.dll, 31"
"CommandFlags" = dword: 00000040
"SubCommands" = "defrag; cleanmgr"

Упорядкування пунктів контекстного меню робочого столу і комп'ютера

Якщо ви додасте в контекстне меню робочого столу або комп'ютера кілька окремих пунктів і / або розкриваються меню, то, можливо, у вас виникне ідея розташувати їх в певному порядку. Вище я розповідав, як задати розташування пункту в меню за допомогою параметра Position. Але він впливає на позицію вашого пункту щодо стандартних (вбудованих) пунктів контекстного меню, тобто дозволяє помістити пункт під ними, над ними або десь в середині меню.

Я також розповідав, що порядок окремих пунктів меню, що розкривається можна задати за допомогою параметра SubCommands, перерахувавши їх там в бажаному порядку. Можна сортувати пункти меню, що розкриваються, і я покажу, як це зробити двома різними способами.

Меню робочого столу

Я розберу найскладніший випадок сортування, внизу меню, де крім своїх пунктів грають роль вбудовані. В меню робочого столу у мене створені три меню (Система, Адміністрування та Стандартні програми).

У всіх них задано однакове розташування внизу контекстного меню за допомогою параметра Position.

Примітка. В меню робочого столу упорядкування працює тільки внизу (Position = Bottom) і в середині (Position відсутня).

Однак мої меню перемежовуються зі стандартними пунктами (Дозвіл екрану, Гаджети і Персоналізація), що не дуже зручно. Це відбувається тому, що пункти шикуються в алфавітному порядку відповідних їм підрозділів реєстру.

Додавання меню, що розкривається в контекстне меню робочого столу і комп'ютера

Щоб змінити порядок меню, потрібно прописати його в якості значення для параметра (За замовчуванням) в розділі

Двічі клацніть параметр (За замовчуванням) і введіть назви розділів меню в реєстрі в бажаному порядку через кому:

Додавання меню, що розкривається в контекстне меню робочого столу і комп'ютера

Якщо ви хочете прибрати стандартні пункти з меню, доведеться видалити відповідні їм розділи, але я не рекомендую цього робити, звичайно.

Аналогічним способом можна змінити порядок окремих пунктів і розкриваються з контекстного меню комп'ютера. З тією лише різницею, що параметр (За замовчуванням) змінюється в розділі

Однак при цьому в меню комп'ютера стандартний пункт Відкрити зміщується вниз і не виділяється жирним, оскільки порушується вбудований в систему порядок пунктів меню.

Додавання меню, що розкривається в контекстне меню робочого столу і комп'ютера

Якщо вас це не влаштовує, просто видаліть параметр (За замовчуванням). Він буде відновлений без значення, і пункт Відкрити повернеться на своє місце.

Можна впорядкувати пункти інакше, використовуючи алфавітний порядок назв розділів власних меню. Досить почати назви, наприклад, з останньої букви латинського алфавіту (z) і цифри, що визначає порядок пункту.

Додавання меню, що розкривається в контекстне меню робочого столу і комп'ютера

В принципі, цей же спосіб можна використовувати і для сортування меню робочого столу.

Готові набори розкривних меню

Я підготував набори REG-файлів, за допомогою яких ви зможете створити будь-який з трьох розкривних меню (або все відразу) в контекстних меню робочого столу і комп'ютера. Меню, що розкриваються мають один рівень вкладеності.

Додавання меню, що розкривається в контекстне меню робочого столу і комп'ютера

Для управління меню використовується оболонка BS Post Installer.

Додавання меню, що розкривається в контекстне меню робочого столу і комп'ютера

  • створити меню, що розкриваються в контекстному меню робочого столу або комп'ютера
  • вибрати, де буде розташовуватися кожне спливаюче меню: вгорі, внизу або посередині контекстного меню
  • видалити будь-яке меню, якщо воно вас чимось не влаштує

Я також створив архів з REG-файлами. які використовувалися в статті в якості зразків, включаючи і додатковий рівень вкладеності.

Схожі статті