пользовательский значок оснастки mmc

Изучаю, как предоставить значок для моих пользовательских оснасток mmc.

Язык = С#


person pdiddy    schedule 18.12.2009    source источник


Ответы (3)


Если вы хотите предоставить растровые изображения для вашей DLL в диалоговом окне «Добавить/удалить» в MMC, вам нужно указать SnapInAbout, укажите ресурсную DLL и идентификатор растрового изображения.

Хм?

Дополнительно полный ответ здесь.

А также в образце MMC SDK есть рабочий код.

person Cheeso    schedule 19.12.2009
comment
Благодарность! Потому что, когда я добавляю свою пользовательскую оснастку, значок по умолчанию — это папка. Я хочу, чтобы это была одна из моих икон - person pdiddy; 19.12.2009
comment
Эта статья объясняет все более подробно Добавление SnapInAbout. - person Pallab Pain; 30.06.2016

Вы не можете сделать это в С#. Вы должны создать родную dll Win32. Другими словами: создайте проект C++. Это не так страшно.

После добавления Win32 Project Visual C++ можно использовать мастер для добавления файла ресурсов. Оттуда вы можете использовать инструменты для добавления значка и текстовых описаний.

Если все пойдет правильно, у вас будет создан файл resource.h в папке «Файлы заголовков». Откройте этот файл, и вы увидите что-то вроде

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by ConsoleResources.rc
//
#define IDB_BITMAP4                     101
#define IDB_BITMAP5                     102
#define IDI_ICON2                       103
#define IDS_COMPANY                     104
#define IDS_PRODUCT_NAME                105
#define IDS_DESCRIPTION                 106

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        107
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

Эти числа 101,... — это числа, которые должны соответствовать атрибуту SnapInAbout, который вы поместили в файл C#.

[SnapInAbout("Your.Unmanaged.dll", ApplicationBaseRelative = true, 
 VendorId = 104, DisplayNameId = 105, DescriptionId = 106, IconId = 103,
 SmallFolderBitmapId = 110, LargeFolderBitmapId = 102, 
 SmallFolderSelectedBitmapId = 101)]    
person Sentient    schedule 17.03.2010
comment
Еще менее страшно получить образцы sysmgmt из Windows SDK и посмотреть на \mmc3.0\LocalizedRegistrationSample, в котором все настроено, и вы можете добавить его в свою оснастку. - person gbjbaanb; 09.10.2013

Я нашел путь. Мне пришлось добавить изображения в коллекцию SmallImages SnapIn.

И тогда у каждого узла области есть ImageIndex и SelectedImageIndex. Все, что вам нужно, это установить для этого свойства правильный индекс коллекции SmallImages.

person pdiddy    schedule 22.12.2009
comment
Буду ли я прав, если предположу, что это позволяет вам изменить значок только после загрузки оснастки, но не влияет на значок оснастки при просмотре того, какие оснастки добавить в консоль? - person BlueMonkMN; 01.10.2015