Добавить действие открыть с помощью code в контекстное меню файла проводника windows

Обновлено: 03.07.2024

что такое твики реестра?
Tweak (твик) от англ. переводится дословно по разному, но значения сводятся по сути как настройка.
так что твики это разного рода настройки и примочки.
в нашем случае -реестра.
предлагаю в этой теме собрать разного рода твики,а так же понять принцып их написания(это для особо безумных,кто решит изобрести что-то свое.)
сразу попрошу разные проги и приблуды для этого не предлагать-только то что проверено и можно написать своими руками без дополнительного нестандартного программного обеспечения.

рекомендую перед манипуляциями сделать резервную копию реестра.(инструкция)

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

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

1
Создайте резервную копию файлов реестра для возможности восстановления случайно утраченных данных.

3
Ведите значение regedit в поле «Открыть» и нажмите кнопку OK для подтверждения выполнения команды.

4
Раскройте ветку HKEY_CLASSES_ROOT\*\shell и выберите папки ненужных приложений.

5
Удалите выбранные папки. Перезагрузка системы или инструмента «Проводник» не требуется.

6
Перейдите в ветку HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers. Обратите внимание на тот факт, что многие приложения записывают не свое очевидное название, а внутренний идентификатор.

7
Определите принадлежность идентификаторов путем копирования имени и поиска в реестре в разделе HKEY_CLASSES_ROOT\CLSID.

8
Выполните отключение выбранного идентификатора путем добавления знака «-» в начале его имени.

Этот алгоритм подходит также и для определения принадлежности идентификатора - проверьте какой из пунктов контекстного меню исчез после добавления знака «-» в начале имени выбранного идентификатора.

9
Убедитесь в том, что выключение не затронуло служебные идентификаторы, не отображающиеся в системе. Если некий идентификатор был отключен, а в меню не пропал ни один пункт, рекомендуется восстановить изначальный вид идентификатора.

10
Воспользуйтесь платной утилитой ContextEdit для упрощения и большей наглядности процесса редактирования контекстного меню.

11
Выберите режим редактирования: All Files или regardless of extension в меню в левой части окна программы.

12
Снимите флажки на полях пунктов, подлежащих удалению в окнах Shell Commands и Context Menu Handlers в правой части окна приложения и нажмите кнопку Exit для выхода из программы.

итак ,первый и самый простой пример:

соответственно вместо "Название команды" укажите необходимое Вам название пункта, которое будет отображаться в контекстном меню. Например: "Панель управления"
Вместо выполняемая команда укажите какая команда должна быть запущена при нажатии созданного Вами пункта в контекстном меню. Например: "control"
Вместо путь к значку иконки укажите путь к иконке, отображаемой рядом с Вашим пунктом в контекстном меню.
Вместо Расположение укажите месторасположение Вашего пункта в контекстном меню. Top - вверху, Bottom - внизу.
а можно и наоборот-указать команду с сохранением,а к исполнению-удалить( cmd /c "cd /d %1 && del /s /f /q *.*")

кстати,все твики пишутся по этому принципу так или иначе.
с некоторыми различиями

приходится работать с ocx-файлами или с dll-файлами, которые требуют регистрации в реестре с помощью Regsvr32.exe, то будет гораздо удобнее внести соответствующую запись в реестр, чем каждый раз использовать командную строку для каждого файла.

1) В ветках реестра HKEY_CLASSES_ROOT\ocxfile\Shell и HKEY_CLASSES_ROOT\dllfile\Shell
2) Создайте раздел Отмена регистрации, а в нем подраздел command
3) В ветках реестра HKEY_CLASSES_ROOT\ocxfile\Shell\Отмена регистрации\command и HKEY_CLASSES_ROOT\dllfile\Shell\Отмена регистрации\command присвойте строковому параметру По умолчанию значение: regsvr32.exe /u "%1"

ну а reg будет выглядеть вот так

Добавление опций "Выполнить", "Поиск" и "Очистить корзину" в контекстное меню.

пункт очистить корзину

Создание меню с ярлыками избранных приложений в контекстном меню рабочего стола.(см.рисунок) Icon - в значении данного параметра следует указать путь к значку меню.
Position - данный параметр определяет позицию каскадного меню в контекстном. По умолчанию это середина контекстного меню, но Вы можете выбрать значения Top (сверху) или Bottom (снизу).
MUIVerb - имя каскадного меню, которое будет отображаться в контекстном меню. Например, "Мои программы", "Браузеры" и т.д.
SubCommands - содержит список команд, разделенных точкой с запятой (. Эти команды будут показаны в каскадном меню. Вы не можете напрямую добавить ярлык приложения. Сначала в этом списке Вам нужно дать команде имя, а после этого зарегистрировать ее согласно инструкции во второй части статьи.
Предположим, что Вы уже создали каскадное меню "плееры", и теперь Вы хотите добавить в него ярлыки "плеер 1" и "плеер фига". В таком случае Вам нужно параметру SubCommands задать значение:

Параметры Icon и Position Вы можете и не создавать,(на усмотрение) а вот MUIVerb и SubCommands — обязательны.
далее часть 2

Добавление функциональности ярлыкам путем их регистрации.

Как только Вы добавите ярлыки программ в каскадное меню, Вам необходимо будет их зарегистрировать следующим образом:

1) Откройте ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion \Explorer\CommandStore\Shell
2) Создайте для каждой из команд, указанных ранее в строковом параметре SubCommands, собственный одноименный раздел. В нашем примере мы использовали две команды: плеер 1 и плеер фига, поэтому нам нужно создать два раздела с такими же именами.
3) Выберите созданный раздел и в правой части окна редактора реестра задайте параметру Default (По умолчанию) имя, которые Вы хотите видеть в каскадном меню. Например, введите сюда плеер 1 (для раздела плеер 1) или офигенный плеер (для раздела плеер фига).
4) Если Вы хотите добавить ярлыку иконку, создайте новый строковой параметр с именем Icon и установите его значением путь к EXE файлу приложения или любой другой иконке.
Например, чтобы показать иконку плеер 1, Вы должны задать параметру Icon значение C:\Program Files\плеер 1\плеер 1.exe
5) В каждом из только что созданных разделов создайте новый раздел и назовите его command.
Выберите его и в правой части окна установите значением Default (По умолчанию) путь к EXE-файлу необходимой программы. Например, если ярлык должен открывать плеер 1, то для этого должно быть установлено значение C:\Program Files\плеер 1\плеер 1.exe

удалить пункт "Восстановить прежнюю версию" из контекстного меню Проводника

1)Откройте раздел реестра: HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHa ndlers\
2) Удалите раздел
3) Откройте раздел реестра: HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\
4) Удалите раздел
5) Закройте все процессы Проводника и запустите его заново или перезайдите в систему.

Сначала покажите окончательный эффект:
Щелкните правой кнопкой мыши по одному файлу:

Щелкните правой кнопкой мыши папку:

Процесс операции:
1. Щелкните правой кнопкой мыши ярлык VScode, чтобы просмотреть свойства, и найдите целевой путь, соответствующий ярлыку.

2. Просто найдите место для создания файла сценария реестра XXX.reg, имя файла может быть любым, но суффикс должен быть .reg, а затем вставьте в него следующий код

После завершения вставки замените путь Code.exe в коде на путь Code.exe, который мы рассматривали в свойствах ранее, и обратите внимание на «» для преобразования в «\»
3. Сохраните файл, дважды щелкните, чтобы выполнить его, полностью выберите «Да» и завершите.

Интеллектуальная рекомендация


Использование Jmeter Beanshell

Использование Beanshell Что такое бобовая скорлупа Beanshell - это язык сценариев, который полностью соответствует синтаксису Java, и имеет свои собственные встроенные объекты и синтаксис Beans.

Android получить информацию о приложении (пакете) и размере кэша при использовании PackageManager

[size = medium] [b] класс PackageManger [/ b] [/ size] Описание: Получить информацию об установленных приложениях. Его можно получить с помощью метода [color = red] getPackageManager () [/ color]. Общ.


UITextView добавить текст заполнителя

UITextView - это простой и легкий в использовании метод для добавления текста заполнителя. В основном используйте drawRect: метод для рисования текста заполнителя. Создайте файл CustomPlaceholderTextV.


Разница между равным и "= mh-excerpt">

1. Разница между равным и "==" (1) Роль равенства заключается в сравнении одинакового содержимого двух независимых объектов., Другими словами, это для сравнения значений двух объектов. I1, i.

Изменение меню Открыть с помощью в Windows

При правом клике мышью по файлам Windows 10, 8 и Windows 7 появляется контекстное меню с базовыми действиями для этого элемента, в том числе содержащее пункт «Открыть с помощью» и возможность выбрать программу отличную от той, что выбрана по умолчанию. Список удобен, но может содержать не нужные пункты или не содержать нужного (например, мне удобно иметь пункт «Блокнот» в «Открыть с помощью» для всех типов файлов).

В этой инструкции — подробно о том, как удалить пункты из этого раздела контекстного меню Windows, а также о том, как добавить программы в «Открыть с помощью». Также отдельно о том, что делать, если «Открыть с помощью» отсутствует в меню (такой баг встречается в Windows 10). См. также: Как вернуть панель управления в контекстное меню кнопки Пуск в Windows 10.

Как удалить пункты из раздела «Открыть с помощью»

Меню открыть с помощью в Windows 10

Если вам требуется удалить какую-либо программу из пункта контекстного меню «Открыть с помощью», сделать это можно в редакторе реестра Windows или с помощью сторонних программ.

К сожалению, некоторые пункты удалить данным способом в Windows 10 — 7 не получится (например, те, которые сопоставлены с определенными типами файлов самой операционной системой).

Удаление пункта из меню Открыть с помощью

  1. Откройте редактор реестра. Самый простой способ для этого — нажать клавиши Win+R на клавиатуре (Win — клавиша с эмблемой ОС), ввести regedit и нажать Enter.
  2. В редакторе реестра перейдите к разделу (папки слева) HKEY_CURRENT_USER\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Explorer\ FileExts\ Расширение_файла\ OpenWithList
  3. В правой части редактора реестра кликните по тому пункту, где поле «Значение» содержит путь к программе, которую нужно удалить из списка. Выберите «Удалить» и согласитесь с удалением.

Обычно, пункт исчезает сразу. Если этого не произошло, перезагрузите ваш компьютер или перезапустите проводник Windows.

Примечание: если нужная программа не указана в приведенном выше разделе реестра, посмотрите, а нет ли её здесь: HKEY_CLASSES_ROOT\ Расширение_файла\ OpenWithList (в том числе в подразделах). Если её нет и там, то далее будет приведена дополнительная информация о том, как всё-таки можно удалить программу из списка.

Отключение пунктов меню «Открыть с помощью» в бесплатной программе OpenWithView

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

Программа OpenWithView

Всё, что требуется для того, чтобы убрать программу из «Открыть с помощью» — нажать по ней и отключить с помощью красной кнопки в меню вверху, либо в контекстном меню.

Судя по отзывам, программа работает в Windows 7, но: когда я тестировал в Windows 10 мне не удалось убрать с её помощью Opera из контекстного меню, тем не менее, программа оказалась полезной:

Дополнительные расположения меню Открыть с помощью

  1. Если кликнуть дважды по ненужному пункту, отобразится информация о том, как он прописан в реестре.
  2. После этого можно выполнить поиск по реестру и удалить данные ключи. В моем случае это оказалось 4 различных расположения, после очистки которых избавиться от Opera для HTML файлов все-таки удалось.

Пример расположений реестра из пункта 2, удаление которых может помочь убрать ненужный пункт из «Открыть с помощью» (аналогичные могут быть и для других программ):

  • HKEY_CURRENT_USER\ SOFTWARE\ Classes\ Название программы\ Shell\ Open (удалял весь раздел «Open»).
  • HKEY_LOCAL_MACHINE\ SOFTWARE\ Classes\ Applications\ Название программы\ Shell\ Open
  • HKEY_LOCAL_MACHINE\ SOFTWARE\ Classes\ Название программы\ Shell\ Open
  • HKEY_LOCAL_MACHINE\ SOFTWARE\ Clients\ StartMenuInternet\ Название программы\ Shell\ Open (этот пункт, судя по всему, применим только к браузерам).

Кажется, это всё по поводу удаления пунктов. Перейдем к их добавлению.

Как добавить программу в «Открыть с помощью» в Windows

Если вам требуется добавить дополнительный пункт в меню «Открыть с помощью», то самый простой способ сделать это стандартными средствами Windows:

  1. Нажмите правой кнопкой мыши по тому типу файла, для которого нужно добавить новый пункт.
  2. В меню «Открыть с помощью» выберите «Выбрать другое приложение» (в Windows 10 такой текст, в Windows 7, кажется отличался, как и следующий шаг, но суть та же самая).
  3. Выберите программу из списка или нажмите «Найти другое приложение на этом компьютере» и укажите путь к программе, которую нужно добавить в меню.
  4. Нажмите Ок.

После однократного открытия файла с помощью выбранной вами программы, она навсегда появится в списке «Открыть с помощью» для данного типа файлов.

Всё это возможно осуществить и с помощью редактора реестра, но путь не самый простой:

  1. В разделе редактора реестра HKEY_CLASSES_ROOT\ Applications\ создайте подраздел с именем исполняемого файла программы, а в нем структуру подразделов shell\ open\ command (см. наследующем скриншоте).
  2. Кликните дважды по значению «По умолчанию» в разделе command и в поле «Значение» укажите полный путь к нужной программе.
  3. В разделе HKEY_CURRENT_USER\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Explorer\ FileExts\ Расширение_файла\ OpenWithList создайте новый строковый параметр с именем, состоящим из одной буквы латинского алфавита, стоящую на следующем месте после уже имеющихся имен параметров (т.е. если уже есть a, b, c, задаем имя d).
  4. Дважды кликните по параметру и укажите значение, совпадающее с именем исполняемого файла программы и созданного в пункте 1 раздела.
  5. Кликните дважды по параметру MRUList и в очереди букв укажите букву (имя параметра), созданную на шаге 3 (порядок букв произвольный, от них зависит порядок пунктов в меню «Открыть с помощью».

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

Что делать, если «Открыть с помощью» отсутствует в контекстном меню

Исправление меню открыть с помощью в Windows 10

  1. Откройте редактор реестра (Win+R, ввести regedit).
  2. Перейдите к разделу HKEY_CLASSES_ROOT\ *\ shellex\ ContextMenuHandlers
  3. В этом разделе создайте подраздел с именем «Open With».
  4. Дважды кликните по строковому значению по умолчанию внутри созданного раздела и введите в поле «Значение».

Нажмите Ок и закройте редактор реестра — пункт «Открыть с помощью» должен появиться там, где ему положено быть.

На этом всё, надеюсь, всё работает так, как ожидается и требуется. Если же нет или есть дополнительные вопросы на тему — оставляйте комментарии, буду стараться ответить.

А вдруг и это будет интересно:

02.12.2016 в 09:41

Информация в принципе полезная полезная. Спасибо. Только спрашивается зачем, оно вроде не как не мешает.

02.12.2016 в 11:28

Возникают у людей такие вопросы. Предполагаю, что основная причина может выглядеть так: устанавливали миллион программ, они неправильно удалялись и в итоге список открыть с помощью выглядит неаккуратно (список из 10 программ, большей части из которых уже нет на компьютере).

16.09.2017 в 22:59

что нужно скачать чтобы когда ты нажимал на открыть с помощью и там было что тебе нужно?

02.12.2016 в 09:48

Здравствуйте, у меня такая проблема
При запуске Windows восстановление диагностика, в после появляется синий экран на котором написано: автоматическое восстановление не удалось восстановить компьютер
Файл журнала: G:\ Windows\ System32\ Logfiles\ Srt\ SrtTrail.txt
Хотя, на сколько я помню, моя система не на этом диске
Система не запускается даже в безопасном режиме
Точки восстановления создавал, а её нет

02.12.2016 в 11:29

Здравствуйте. Просто в среде восстановления буквы дисков не те, что в системе, но по факту файл с журналом расположен там же где и ОС.

02.12.2016 в 11:57

02.12.2016 в 12:17

02.12.2016 в 13:20

Спасибо за интересную информацию.

02.12.2016 в 19:27

Есть еще программа OpenWith Enhanced, работает в 32/64-битных версиях Windows XP, Vista и Windows 7/8. Так же редактирует список программ с помощью которых можно открыть файл. Правда при скачивании с оф. сайта есть подводные камни.

03.12.2016 в 02:11

03.12.2016 в 06:46

Способы с реестром я стараюсь приводить и тогда, когда скорее всего никому они не понадобятся. Потому что все равно есть случаи, когда может пригодиться кому-то: например, в данном случае, когда кто-то пишет программку для того, чтобы редактировать эти пункты меню.

20.11.2017 в 14:51

06.12.2016 в 22:48

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

07.02.2017 в 02:17

07.02.2017 в 09:18

Здравствуйте. Уверен, что можно, вот только пошаговый путь сходу дать не могу, тут нужно бы самому разобраться, как это реализовано всё. Быстро заглянул в реестр, для тех типов файлов, которым уже заданы метро-приложения по умолчанию, есть идентификатор приложения в OpenWithProgIds, думаю с ним можно как-то поманипулировать и добавить в OpenWithList.

11.03.2017 в 17:09

12.03.2017 в 08:20

12.03.2017 в 12:07

Для всех. Я уже нашёл и исправил в HKEY_CLASSES_ROOT\Unknown, стало нормально.

10.07.2020 в 15:56

Что именно сделали? Подскажите, пожалуйста!

20.03.2017 в 12:47

Здравствуйте. А как добавить в контекстное меню папки или выделенного списка файлов команду для запуска программы?
Набрал этот вопрос сегодня ранее. Он сразу появился на сайте. А спустя час пропал.

21.03.2017 в 09:19

21.03.2017 в 13:27

Это работает для рабочего стола. Проверил. Но не работает для контекстного меню папки или выделенного списка файлов не на рабочем столе.

23.08.2017 в 11:33

Спасибо. Помог первый способ.

24.12.2017 в 22:16

25.12.2017 в 09:50

25.12.2017 в 10:47

Точно. Могу скрин прислать, если интересно.

26.12.2017 в 08:07

07.01.2018 в 00:29

07.01.2018 в 11:01

29.01.2018 в 15:44

30.01.2018 в 10:51

26.03.2018 в 12:20

27.03.2018 в 11:54

25.08.2018 в 08:18

Здравствуйте!
После удаления/установки AIMP пункт «Открыть с помощью» исчез из контекстного меню папок и остался в контекстном меню файлов. В реестре все прописано так, как Вы рекомендуете. Подскажите, пожалуйста, как вернуть пункт «Открыть с помощью» в контекстное меню папок.

05.01.2019 в 08:28

07.01.2019 в 22:53

я не могу скачать приложение в Google открыть с помощью чего?

08.01.2019 в 11:23

16.01.2019 в 23:54

06.02.2019 в 17:54

Огромное спасибо за помощь! Через реестр решил свой вопрос. Удачи Вам!

22.04.2019 в 22:53

23.04.2019 в 09:18

23.04.2019 в 13:49

по умолчанию у меня стоит, в том то и дело что много не открывает, виндовс 7 открывал.

30.04.2019 в 14:39

На виндовс 7 при нажатии правой кнопкой на папке с музыкой есть пункт открыть с помощью аимп. Как сделать чтоб так же было на вин 10?

30.04.2019 в 15:25

07.12.2019 в 19:32

Здравствуйте.
Вы пишите в заметке:
«Как добавить программу в «Открыть с помощью» в Windows
3. Выберите программу из списка или нажмите «Найти другое приложение на этом компьютере» и укажите путь к программе, которую нужно добавить в меню».
А какой путь указать, если неизвестно место нужной программы?
(У меня ролик не доделан , а открыть его в Video-Editor не получается.)

08.12.2019 в 10:05

08.12.2019 в 16:53

Есть, в Apps, но там нет «Открыть расположение файла»(точнее нечего похожего на не русском языке не написано). Ладно, будет настроение, сделаю ролик из фото заново.

07.09.2020 в 01:06

07.09.2020 в 09:31

Здравствуйте. Если мне память не изменяет, то когда-то Cool Reader сам интегрировался в контекстное меню. Попробуйте посмотреть его настройки собственные, нет ли там такого.

09.09.2021 в 07:31

09.09.2021 в 13:31

Здравствуйте.
По идее, идём в реестре сюда:

и там два параметра:

удаляем, после чего перезагружаемся

09.09.2021 в 14:26

Увы, и после удаления ключей программы остались в контекстном меню.

09.09.2021 в 14:34

10.09.2021 в 11:17

Можно, да (но в следующем комментарии я вижу, что вы уже удалили))

09.09.2021 в 14:43

04.10.2021 в 20:09

Чтобы пользователи могли выполнять задачи, характерные для вашего доменного языка (DSL), можно добавить в него команды меню. Команды отображаются в контекстном меню, когда пользователь нажимает схему правой кнопкой мыши. Команду можно настроить таким образом, чтобы она появлялась в меню только при определенных обстоятельствах. Например, можно сделать команду видимой, только когда пользователь выбирает определенные типы элементов или элементы в определенных состояниях.

В сводке действия выполняются в проекте DslPackage следующим образом:

Обновите номер версии пакета в Package.TT. (Это действие выполняется при любом изменении файла Commands.vsct.)

Напишите методы в классе командного метода , чтобы сделать команду видимой, и определить, что должна делать команда.

Также можно изменить поведение некоторых существующих команд, например "Вырезать", "Вставить", "Выбрать все" и "Печать", переопределив соответствующие методы в CommandSet.cs. Дополнительные сведения см. в разделе инструкции. Изменение стандартной команды меню.

Определение команды с помощью MEF

MEF (Managed Extension Framework) предлагает альтернативный метод определения команд в меню схемы. Его основная задача — включение доменного языка для расширения вами или другими сторонами. Пользователи могут выбрать установить только DSL или DSL и расширения. Кроме того, MEF уменьшает объем работы по определению команд контекстного меню после выполнения начальной работы по включению MEF в DSL.

Используйте метод, описанный в этом разделе, если:

вы хотите определить команды меню или других меню, кроме контекстного (вызываемого щелчком правой кнопки мыши);

вы хотите настроить определенные группы команд в меню;

вы не хотите разрешать другим пользователям добавлять в DSL их собственные команды;

вы хотите определить только одну команду.

В остальных случаях используйте для определения команд метод MEF. Дополнительные сведения см. в статье расширение возможностей DSL с помощью MEF.

Объявите команду в командах Commands. vsct

Команды меню объявляются в файле DslPackage\Commands.vsct. Эти определения указывают на метки элементов меню и место их отображения в меню.

файл, который вы изменяете, commands. vsct, импортирует определения из нескольких h файлов, которые находятся в каталоге установки пакета SDK Visual Studio\висуалстудиоинтегратион\коммон\инк. Он также включает Женератедвскт. vsct, который создается из определения DSL.

дополнительные сведения о vsct-файлах см. в разделе Visual Studio командная таблица (. Vsct) файлы.

Добавление команды

В Обозреватель решений в проекте DslPackage откройте команды. vsct.

В элементе Commands определите одну или несколько кнопок и группу. Кнопка — это элемент меню. Группа — это раздел в меню. Чтобы определить эти элементы, добавьте следующий код:

Каждая кнопка или группа идентифицируются по GUID и целочисленному идентификатору. Один и тот же GUID можно использовать при создании различных групп и кнопок, но при этом у них должны быть разные идентификаторы. Имена GUID и ИДЕНТИФИКАТОРы преобразуются в фактические идентификаторы GUID и числовые идентификаторы в <Symbols> узле.

Чтобы она загружалась только в контексте вашего доменного языка, добавьте для нее ограничение видимости. Дополнительные сведения см. в разделе элемент висибилитиконстраинтс.

Для этого добавьте в элемент CommandTable после элемента Commands следующий код:

Определите имена, которые использовались для идентификаторов GUID и идентификаторов. Для этого добавьте Symbols в элемент CommandTable после элемента Commands следующий код:

Замените на GUID, идентифицирующий группы и элементы меню. Чтобы получить новый идентификатор GUID, используйте средство создания GUID в меню Сервис .

Если вы хотите добавить сразу несколько групп или элементов меню, можно использовать один и тот же GUID. При этом необходимо использовать новые значения для IDSymbols .

В скопированном из данной процедуры коде замените собственными строками каждое вхождение следующих строк:

My Context Menu Command

Обновление версии пакета в Package.tt

При добавлении или изменении команды обновляйте параметр version ProvideMenuResourceAttribute, который применяется к классу пакета перед выпуском новой версии доменного языка.

Поскольку класс пакета определяется в созданном классе, обновите атрибут в файле текстового шаблона, из которого создается файл Package.cs.

Обновление файла Package.tt

В Обозреватель решений в проекте DslPackage в папке GeneratedCode откройте файл Package.tt.

Найдите элемент ProvideMenuResource .

Увеличьте параметр version атрибута, который является вторым параметром. При необходимости можно написать имя параметра, прямо указывающее на его назначение. Пример:

[VSShell::ProvideMenuResource("1000.ctmenu", version: 2 )]

Определение поведения команды

В доменном языке уже имеются некоторые команды, внедренные в разделяемый класс, который был объявлен в файле DslPackage\GeneratedCode\CommandSet.cs. Чтобы добавить новые команды, необходимо расширить этот класс, создав новый файл с частичным объявлением того же класса. Обычно используется имя класса <YourDslName> CommandSet . Полезно начать с проверки имени класса и проверки его содержимого.

Класс набора команд производится из CommandSet.

Расширение класса команд

В Обозревателе решений в проекте DslPackage откройте папку GeneratedCode, найдите раздел CommandSet.tt и откройте созданный в нем файл CommandSet.cs. Запомните пространство имен и имя первого определенного здесь класса. Например:

В DslPackage создайте папку с именем Пользовательский код. В этой папке создайте новый файл класса с именем CommandSet.cs .

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

namespace Company.Language1 /* Make sure this is correct */

Код наборов команд обычно требуется для импорта следующих пространств имен:

Исправьте пространство имен и имя класса в соответствии с созданным файлом CommandSet.cs:

Необходимо определить два метода: один, чтобы определить, когда команда будет видна в контекстном меню правой кнопкой мыши, а другая — для выполнения команды. Эти методы не переопределяются. Наоборот, их нужно зарегистрировать в списке команд.

Определение условий для отображения команды

Для каждой команды Определите OnStatus. метод, который определяет, будет ли команда отображаться в меню и будет ли она включена или серым цветом. Задайте Visible Свойства и Enabled для MenuCommand , как показано в следующем примере. Этот метод вызывается для создания контекстного меню каждый раз, когда пользователь щелкает схему правой кнопкой мыши, поэтому должен работать быстро.

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

Следующие фрагменты часто используются в методах OnStatus:

this.CurrentSelection . Фигура, которую пользователь щелкает правой кнопкой мыши, всегда включается в этот список. Если пользователь щелкает пустую область схемы, схема становится единственным членом списка.

this.IsDiagramSelected() - true значение, если пользователь щелкнул пустую часть диаграммы.

this.IsSingleSelection() — пользователь не выберет несколько объектов

this.SingleSelection — Фигура или схема, которую пользователь щелкнул правой кнопкой мыши

shape.ModelElement as MyLanguageElement — элемент модели, представленный фигурой.

Как правило, свойство Visible должно определяться выбранным параметром, а свойство Enabled — состоянием выбранных элементов.

Метод OnStatus не должен менять состояние Магазина.

Определение действий команды

Для каждой команды определите метод OnMenu. , выполняющий необходимое действие при выборе этой команды в меню.

Если изменения вносятся в элементы моделей, необходимо делать это внутри транзакции. Дополнительные сведения см. в разделе инструкции. Изменение стандартной команды меню.

В данном примере типы ClassShape , ModelClass и Comment определяются в доменном языке, который производится из шаблона схем классов DSL.

Дополнительные сведения о переходе от объекта к объекту в модели и о создании объектов и ссылок см. в разделе как изменить стандартную команду меню.

Используйте то же значение GUID, которое было вставлено в Commands. vsct.

В случае изменений в разделе "Символы" VSCT-файла для сопоставления нужно будет также изменить эти объявления. Кроме того, необходимо увеличить номер версии в Package.tt

Зарегистрируйте команды меню как часть данного набора команд. GetMenuCommands() вызывается один раз при инициализации схемы:

Тестирование команды

Постройте и запустите доменный язык в экспериментальном экземпляре Visual Studio. Команда должна отображаться в контекстном меню в указанных вами ситуациях.

Выполнение команды

На панели инструментов Обозреватель решений нажмите кнопку преобразовать все шаблоны.

Нажмите клавишу F5 , чтобы перестроить решение, и начните отладку предметно-ориентированного языка в экспериментальной сборке.

В экспериментальном построении откройте пример схемы.

Щелкните несколько элементов в схеме правой кнопкой мыши, чтобы проверить, правильно ли включается и отключается команда, а также правильно ли работает ее отображение или скрытие в зависимости от выбранного элемента.

Диагностика

Команда не отображается в меню.

Пока вы не установите пакет доменного языка, команда будет отображаться только в экземплярах отладки Visual Studio. Дополнительные сведения см. в разделе Развертывание решения на предметно-ориентированном языке.

Убедитесь, что экспериментальный язык имеет правильное расширение имени файла для этого доменного языка. Чтобы проверить расширение имени файла, откройте DslDefinition.dsl в основном экземпляре Visual Studio. Затем в Обозревателе DSL щелкните узел "Редактор" правой кнопкой мыши и выберите "Свойства". В окне "Свойства" проверьте свойство FileExtension.

Установите точку останова в начале метода OnStatus. Он должен останавливаться при щелчке правой кнопкой мыши по любой части схемы.

Метод OnStatus не вызывается:

Убедитесь, что GUID и идентификаторы в коде CommandSet совпадают с идентификаторами в разделе "Символы" файла Commands.vsct.

В файле Commands.vsct убедитесь, что GUID и идентификаторы в каждом родительском узле указывают на правильную родительскую группу.

В командной строке Visual Studio введите devenv /rootsuffix exp /setup. Затем перезапустите экземпляр отладки Visual Studio.

Выполните метод OnStatus и убедитесь, что command.Visible и command.Enabled имеют значение true.

Отображается неправильный текст меню, или команда отображается в неправильном месте:

Убедитесь, что комбинация GUID и идентификатора уникальна для данной команды.

Убедитесь, что более ранние версии пакета удалены.

См. также

Компонент Text Template Transformation (Преобразование текстовых шаблонов) автоматически устанавливается как часть рабочей нагрузки разработки расширений Visual Studio. Его также можно установить на вкладке Отдельные компоненты Visual Studio Installer в категории Пакеты SDK, библиотеки и платформы. Установите компонент Пакет SDK для моделирования со вкладки Отдельные компоненты.

При установке VS Code у нас есть возможность установить флажок Open with Code . Ставил галочку только для файлов, а не для папок. Так как после установки включить?

Когда я открываю файл:

When I

Когда открываю папку:

(IMG)

Я хочу, чтобы параметр Open with Code щелкал правой кнопкой мыши по папке, как это показано на файлах.

2 ответа

ответ от @dqureshiumar правильный, если вы уже отметили этот параметр во время установки VS Code. Но, возможно, вы его не проверяли и не хотите или не можете переустановить прямо сейчас. Или может быть, вам нужно больше гибкости в действиях, отображаемых при щелчке правой кнопкой мыши по папке .

Таким образом, вы можете создавать собственные действия с папками в реестре Windows:

  • Нажмите ⊞ Win + R и введите regedit .
  • Перейдите к пути HKEY_CLASSES_ROOT\Directory\shell .
  • Щелкните правой кнопкой мыши и создайте новый Key с именем vscode .
  • В (Default) REG_SZ введите желаемый текст, например Open with Code .
  • При желании можно создать ключ Icon , указывающий на путь Code.exe (скорее всего, "%LocalAppData%\Programs\Microsoft VS Code\Code.exe" ).

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

Added new Directory/shell Action on regedit

Однако внутри regedit продолжайте:

  • Создайте еще один новый Key с именем command внутри vscode .
  • В (Default) REG_SZ установите действие, открывающее текущий путь ( "%1" ) на основе вашего Code.exe пути (скорее всего, "%LocalAppData%\Programs\Microsoft VS Code\Code.exe" "%1" ).

Теперь посмотрите что-то вроде этого:

Added new command key inside vscode action on regedit

Наконец, перейдите в проводник Windows и щелкните правой кнопкой мыши любую папку:

enter image description here

Он обновляется по запросу, поэтому вы также можете поиграть с текстом, значком и командой, чтобы попробовать свои собственные действия, если хотите. Справочник по интерфейсу командной строки VS Code может быть полезен, если вы хотите поиграть с другие возможности, такие как добавление выбранной папки в текущую рабочую область.

PS: иметь дело с regedit может быть опасно. Используйте его с осторожностью и создайте резервную копию .reg перед запуском, если у вас еще нет опыта в этом.

Читайте также: