Додавання розкривного меню в контекстне меню робочого стола комп'ютера


Для роботи розкривного меню потрібні дві складових:

  • команди, які виконуються при клацанні по пункту меню
  • меню, що розкриває список пунктів
  • Спочатку я розповім, як зареєструвати у реєстрі власні команди. У порівнянні зі способом додавання окремих пунктів меню, про який я вже розповідав, такий підхід має дві переваги:

  • Один раз зареєструвавши команду, її можна викликати з будь-якого меню, якщо їх декілька.
  • Управління пунктами меню значно спрощується.
  • Слідуючи простим покроковим інструкціям, через 10 хвилин ви створите власну спадне меню, яке показано на малюнку нижче.

    раскрывающееся меню

    В кінці статті ви також знайдете готові набори розкривних меню.

    Реєстрація команд в реєстрі

    Спочатку ми зареєструємо команди, які будуть виконуватися при клацанні по пункту меню. Відкрийте редактор реєстру і приступимо!

    Перейдіть в разделHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\Shell

    В цьому розділі створіть підрозділи для кожної програми або команди, яку ви хочете бачити в меню. Назви підрозділів можуть бути будь-якими, але обов'язково латинськими і без пробілів. В моєму прикладі створюється три підрозділи:

    • regedit
    • taskmgr
    • devmgmt

    У кожному із створених підрозділів двічі клацніть параметр (За замовчуванням) і в якості значення задайте ім'я ярлика, який ви хочете бачити в меню. Наприклад, для підрозділу regedit я поставив ім'я Редактор реєстру.

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

    Тепер задайте команду для пункту меню. У кожному розділі, який ви створили на кроці 2, створіть підрозділ з ім'ям command. Потім двічі клацніть параметр (За замовчуванням) і в якості значення вкажіть шлях до програми.

    Наприклад, для редактора реєстру я вказав regedit.exe (повний шлях не потрібен, оскільки виконуваний файл знаходиться в системній папці).

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

    раскрывающееся меню

    Створення спливаючого меню і додавання в нього пунктів

    Тепер потрібно в реєстрі створити меню і додати в нього пункти, які будуть служити для виклику команд.

    В залежності від того, де ви хочете створити спливаюче меню, виберіть розділ.

    • для меню «Комп'ютер» і перейдіть у розділ: HKEY_CLASSES_ROOT\CLSID\20D04FE0-3AEA-1069-A2D8-08002B30309D\shell
    • для меню робочого столу перейдіть у розділ: HKEY_CLASSES_ROOT\DesktopBackground\Shell

    Клацніть правою кнопкою миші по розділу shell і виберіть пункт Створити Новий розділ. Ім'я розділу можна вибрати будь-яку, але воно обов'язково повинно бути латинське. Назвіть його, наприклад, Menu1. В цьому розділі будуть створені наступні рядкові параметри.

    Параметр MUIVerb (обов'язково) відповідає за назву розкривного меню, тому значення можете вибирати будь-який. Я назвав своє Система.

    Параметр SubCommands (обов'язково) містить список покажчиків для команд, які будуть виконуватися з меню. Назви покажчиків повинні відповідати назвам підрозділів реєстру, які ви створили на кроці 2 в попередньому розділі статті. Розділяйте покажчики крапкою з комою (;) та перераховуйте їх у тому порядку, в якому ви хочете бачити пункти в меню. Щоб вам було простіше зрозуміти, я наведу свій список:

    regedit;taskmgr;devmgmt

    Таким чином, у мене в меню будуть редактор реєстру, диспетчер завдань та диспетчер пристроїв.

    Параметр Icon (необов'язково) задає значок для розкривного меню. Можна задати шлях до бібліотеки (dll) і номер ресурсу (піктограми), або повний шлях до виконуваного файлу (якщо він у системній папці, достатньо вказати тільки ім'я). Для свого меню «Система» я поставив значок imageres.dll,104 (спочатку почала ім'я файлу, а через кому – номер ресурсу).

    Параметр Position (необов'язково) відповідає за розташування розкривного меню в контекстному меню. Ви можете задати йому значення Top (зверху) або Bottom (знизу). Якщо значення не задавати, спадне меню опиниться в середині контекстного меню. Я розташував своє меню внизу.

    Параметр Extended (необов'язково) відповідає за відображення пункту в меню. Коли параметр присутній, щоб побачити створений пункт, потрібно викликати контекстне меню, утримуючи натиснутою клавішею SHIFT. Цього параметру не потрібні значення.

    Якщо ви хочете створити два меню, створіть розділ Menu2 і повторіть кроки 3 – 7. Таких меню можна зробити скільки завгодно.

    Давайте подивимося, що вийшло в реєстрі:

    раскрывающееся меню

    До речі, вже все готово! У контекстному меню комп'ютера з'явилося розкривне меню «Система» зі списком пунктів.

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

    Windows Registry Editor Version 5.00
     
    [HKEY_CLASSES_ROOT\CLSID\20D04FE0-3AEA-1069-A2D8-08002B30309D\shell\Menu1]
    "MUIVerb"="Система"
    "SubCommands"="regedit;taskmgr;devmgr"
    "Icon"="imageres.dll,104"
    "Position"="Bottom"
     
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\regedit]
    @="Редактор реєстру"
    "Icon"="regedit.exe"
     
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\regedit\command]
    @="regedit.exe"
     
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\taskmgr]
    @="Диспетчер завдань"
    "Icon"="taskmgr.exe"
     
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\taskmgr\command]
    @="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,6 d,00,52,00,6 f,00,6 f,00,74,00,25,\
     
    00,5 c,00,73,00,79,00,73,00,74,00,65,00,6 d,00,33,00,32,00,5 c,00,6 d,00,6 d,00,\
     
    63,00,2 e,00,65,00,78,00,65,00,20,00,2 f,00,73,00,20,00,25,00,53,00,79,00,73,\
    00,74,00,65,00,6 d,00,52,00,6 f,00,6 f,00,74,00,25,00,5 c,00,73,00,79,00,73,00,\
     
    74,00,65,00,6 d,00,33,00,32,00,5 c,00,64,00,65,00,76,00,6 d,00,67,00,6 d,00,74,\
    00,2 e,00,6 d,00,73,00,63,00,00,00

    Тепер ви можете побачити, яка структура повинна бути в реєстрі.


    Сторінки: 1 2 Слід.