Добавьте разделитель в контекстное меню проводника Windows (не в подменю)

#windows #registry #contextmenu

#Windows #реестр #contextmenu

Вопрос:

Я обнаружил, что «CommandFlags»= dword:00000040 добавит разделитель под записью, хотя только в подменю (в строке «subcomands» =»»). Пример здесь.

Есть ли способ добавить разделитель в главное контекстное меню?

Пример, который я использую:

 [HKEY_CLASSES_ROOTAllFilesystemObjectsshellDelete With Rimraf]
@="Delete With Rimraf"
"CommandFlags"=dword:00000040
  

Это не дает разделителя.

Ответ №1:

В этом примере разделитель находится после и перед элементом, эта запись предназначена для загрузчика VirusTotal

 Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREClasses*shellvtuploader]
@="Send to VirusTotal"
"Icon"="C:\Program Files\VirusTotalUploader2\VirusTotalUploader2.2.exe,0"
"SeparatorBefore"=""
"SeparatorAfter"=""
  

Для других приложений, загруженных через shellex, невозможно добавить разделитель поверх реестра, введенная dll добавляет / удаляет сам разделитель, затем вам нужно изменить код dll и перекомпилировать его для достижения желаемого. вот пример с notepad
https://github.com/notepad-plus-plus/notepad-plus-plus/pull/3092/commits

 InsertMenu(hMenu, nIndex, MF_STRING | MF_BYPOSITION, idCmd  , m_szMenuTitle);
  

Ответ №2:

Привет, я автор записи в блоге, на которую вы ссылаетесь (https://blog.sverrirs.com/2014/05/creating-cascading-menu-items-in.html )

Ваши возможности управления главным контекстным меню довольно ограничены. В документации MSDN указано, что вы можете использовать ECF_SEPARATORBEFORE (0x20) значение только для элементов верхнего уровня.