Я веб-разработчик с очень небольшим опытом программирования COM; Я хочу разработать лист свойств, чтобы другой отдел мог изменять миниатюры фотографий через ADUC.
До сих пор я создал все сценарии для регистрации библиотеки DLL и добавления ее в ADUC, которую я тестировал с помощью предварительно скомпилированной библиотеки DLL, которую я обнаружил, поэтому остается только создать саму библиотеку DLL.
В ходе исследований я обнаружил, что мне нужно реализовать классы IShellExtInit и IShellPropSheetExt, если я использую C ++; Мне бы очень хотелось узнать, как это сделать в C #, но что сначала легче изучить, тем лучше, чем я могу попытаться выучить другой язык самостоятельно.
Может кто-нибудь указать мне в направлении некоторых рабочих примеров кода или учебных пособий? Все, что я нашел, — это больше теории, и я лучше изучаю следующие уроки, так что это было бы очень полезно!
Пока я создал следующую оболочку, пожалуйста, дайте мне знать, если она выключена, но с моим ограниченным знанием COM это все, что я написал на данный момент.
#include "stdafx.h"
#include <ShObjIdl.h>
class PropPage : IShellExtInit, IShellPropSheetExt
{
/////////////////////////
//IShellExtInit methods//
/////////////////////////
HRESULT Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID)
{
return S_OK;
}
//////////////////////////////
//IShellPropSheetExt methods//
//////////////////////////////
HRESULT AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
{
return S_OK;
}
HRESULT ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE pfnReplacePage, LPARAM lParam)
{
return S_OK;
}
/////////////////
//Misc. methods//
/////////////////
};
Постскриптум Я разделю это на cpp и header, когда у меня будет больше, но пока я понятия не имею, что я делаю, легче все это содержать в cpp
Полное идиотское руководство по написанию расширений оболочки — часть V объясняет добавление страниц, как собрать все вместе, а также дает справочный исходный код.
Добавление страниц свойств
Если Initialize () возвращает S_OK, Explorer запрашивает новый интерфейс IShellPropSheetExt. IShellPropSheetExt довольно прост, только с одним методом, который требует реализации. […]
Метод AddPages () — это тот, который мы реализуем. ReplacePage () используется только расширениями, которые заменяют страницы в апплетах панели управления, поэтому нам не нужно реализовывать это здесь. Проводник вызывает нашу функцию AddPages (), чтобы позволить нам добавлять страницы в список свойств, который настраивает Проводник.
Параметры для AddPages () являются указателем на функцию и LPARAM, оба из которых используются только оболочкой. lpfnAddPageProc указывает на функцию внутри оболочки, которую мы вызываем для фактического добавления страниц. lParam — это таинственная ценность, которая важна для оболочки. Мы не связываемся с этим, мы просто передаем его обратно в функцию lpfnAddPageProc.
Есть примеры страниц свойств ADUC в примерах Platform SDK. Я не уверен, что они все еще есть в Windows 7+ SDK. Вам может понадобиться загрузить старый (например, Windows 2003) SDK, чтобы получить образцы. Я действительно думаю, что один из них может показать вам, как хранить фотографию.