Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Modul snap-in Uživatelé a počítače služby Active Directory konzoly MMC je navržený tak, aby zobrazoval seznam vlastností pro různé objekty na serveru služby Active Directory. Seznam vlastností obsahuje jednu nebo více stránek, které slouží k zobrazení a úpravě dat objektu. Různé typy objektů mají různé sady stránek, které jsou pro ně zobrazeny. Modul snap-in Uživatelé a počítače služby Active Directory konzoly MMC také umožňuje dodavatelům třetích stran přidávat vlastní stránky do seznamu vlastností pro určitý typ objektu. Další informace naleznete v tématu stránky vlastností pro použití se specifikátory zobrazení.
Některé aplikace, jiné než modul snap-in Uživatelé a počítače služby Active Directory konzoly MMC, musí uživateli poskytnout možnost zobrazit a upravit atributy objektu na serveru služby Active Directory. Aplikace by mohla implementovat vlastní seznamy vlastností, ale je lepší nabídnout konzistentní uživatelské rozhraní, aby se zkrátila doba nejasnosti a učení. Modul snap-in Uživatelé a počítače služby Active Directory konzoly MMC naštěstí umožňuje libovolné aplikaci OLE COM zobrazit seznam vlastností objektu, který je identický se seznamem vlastností, který by zobrazil modul snap-in Uživatelé a počítače služby Active Directory konzoly MMC pro stejný objekt.
Další informace a příklad kódu, který je hostitelem seznamu vlastností Uživatelé a počítače služby Active Directory, najdete v ukázce PropSheetHost v sadě SDK (Platform Software Development Kit).
Cílová skupina vývojářů
V této dokumentaci se předpokládá, že čtenář je obeznámen s vývojem operací modelu COM a komponent pomocí jazyka C++. V současné době není možné vytvořit rozšíření seznamu vlastností služby Active Directory pomocí jazyka Visual Basic.
Hostování seznamu vlastností Uživatelé a počítače služby Active Directory
Zobrazení seznamu vlastností objektu na serveru služby Active Directory
Vytvořte okno, které lze použít ke zpracování zpráv. Může se jednat o existující okno nebo okno pro zvláštní účely. To se označuje jako skryté okno.
Vytvořte objekt OLE COM odvozený z IDataObject. Tento datový objekt musí podporovat následující formáty dat:
CFSTR_DSOBJECTNAMES Tento datový formát obsahuje DSOBJECTNAMES, který identifikuje objekt, na který se vztahuje seznam vlastností. Při hostování seznamu vlastností se v následujícím seznamu zobrazují významnější členové struktury DSOBJECTNAMES.
clsidNamespace reserved. V tomto případě tuto hodnotu nastavte na identifikátor GUID pro vaši aplikaci pro případ, že se použije v budoucnu.
objekty aObjects Obsahuje pole struktur DSBOJECT. Každá DSBOJECT struktura představuje jeden objekt adresáře. cItems člen obsahuje počet prvků v poli. Použije se pouze první objekt v tomto poli. Ostatní objekty jsou ignorovány.
CFSTR_DSDISPLAYSPECOPTIONS Tento formát dat obsahuje strukturu DSDISPLAYSPECOPTIONS obsahující data, která budou použita stránkami vlastností, například odkud se mají stránky vlastností načíst, server a přihlašovací údaje pro použití atd. Významnější členy DSDISPLAYSPECOPTIONS jsou uvedeny v následujícím seznamu.
offsetAttribPrefix Řetězec předpony atributu určuje, kde se získá seznam stránek vlastností. Musí obsahovat jeden z následujících řetězců.
Řetězec předpony atributu Popis "admin" Stránky vlastností jsou načteny z atributu adminPropertyPages. "shell" Stránky vlastností jsou načteny z shellPropertyPages atributu. CFSTR_DS_PROPSHEETCONFIG Tento datový formát obsahuje strukturu PROPSHEETCFG, která obsahuje data hostitele seznamu vlastností. Při hostování seznamu vlastností obsahují nejvýznamnější členové struktury PROPSHEETCFG data zobrazená v následujícím seznamu.
lNotifyHandle Musí být nula. hwndParentSheet Obsahuje popisovač okna pro příjem WM_ADSPROP_NOTIFY_CHANGE zpráv, když se něco na jedné ze stránek změní a použije. Pokud tato zpráva není požadovaná, může být null.
hwndHidden Obsahuje popisovač okna pro příjem WM_DSA_SHEET_CREATE_NOTIFY a WM_DSA_SHEET_CLOSE_NOTIFY zpráv. Nastavte ho na popisovač skrytého okna.
wParamSheetClose Obsahuje identifikátor definovaný aplikací vrácený v wParam ve zprávě WM_DSA_SHEET_CLOSE_NOTIFY. Pokud je tento člen nula, zpráva WM_DSA_SHEET_CLOSE_NOTIFY nebude publikována do skrytého okna.
Vytvořte instanci objektu CLSID_DsPropertyPages a získejte rozhraní IShellExtInit objektu. Je také možné duplikovat chování CLSID_DsPropertyPages objektu. Další informace naleznete v tématu Duplikování chování objektu CLSID_DsPropertyPages.
Inicializovat CLSID_DsPropertyPages objekt voláním IShellExtInit::Initialize metoda. Parametry pidlFolder a hkeyProgID se v této metodě nepoužívají. Parametr pdtobj je ukazatel na datový objekt vytvořený v kroku 2. Při IShellExtInit::Initialize metoda, CLSID_DsPropertyPages objekt uloží odkaz na datový objekt.
Získejte rozhraní IShellPropSheetExt objektu CLSID_DsPropertyPages a zavolejte metodu IShellPropSheetExt::AddPages. Parametr lpfnAddPage je adresa funkce zpětného volání, kterou musíte implementovat. Formát této funkce je uveden níže. Pokud je funkce zpětného volání deklarována jako člen třídy C++, musí být funkce zpětného volání deklarována jako statické. Parametr lParam je hodnota definovaná aplikací, kterou lze použít k identifikaci objektu, který implementuje funkci zpětného volání. Při IShellPropSheetExt::AddPages metoda je volána, CLSID_DsPropertyPages objekt získá data z datového objektu a výčet stránek vlastností registrovaných pro specifikátory zobrazení objektu. Objekt CLSID_DsPropertyPages pak vytvoří výčet objektů stránky vlastností, které volají IShellPropSheetExt::AddPages metoda.
BOOL CALLBACK AddPagesCallback(HPROPSHEETPAGE, LPARAM)Každá stránka přidaná objekty stránky vlastností způsobí, že se volá funkce zpětného volání s popisovačem stránky vlastností a hodnotou definovanou aplikací. Funkce zpětného volání musí ukládat každý předaný popisovač stránky vlastností. Když CLSID_DsPropertyPages objekt IShellPropSheetExt::AddPages metoda vrátí, všechny stránky budou přidány prostřednictvím funkce zpětného volání.
Vyplňte PROPSHEETHEADER strukturu, aby se zobrazil seznam vlastností. phpage člen obdrží ukazatel na pole popisovačů stránky, které byly shromážděny vaší funkcí zpětného volání. nPages člen obdrží počet stránek v poli popisovačů stránky.
Zobrazte seznam vlastností zavoláním funkce PropertySheet.
Pokud se data na libovolné stránce změní a OK nebo Použít tlačítka, zobrazí se okno identifikované hwndParentSheet člen struktury PROPSHEETCFGWM_ADSPROP_NOTIFY_CHANGE zprávu. Tato zpráva je výhradně oznámení a nevyžaduje žádnou konkrétní akci.
Po zavření stránky obdrží okno identifikované hwndHidden člen struktury PROPSHEETCFG obdrží WM_DSA_SHEET_CLOSE_NOTIFY zprávu. Tato zpráva je výhradně oznámení a nevyžaduje provedení žádné konkrétní akce.
V některých případech budou muset existující seznamy vlastností zobrazit sekundární seznam vlastností. Pokud například zobrazíte seznam vlastností pro objekt uživatele a vyberete stránku Člen, zobrazí se seznam skupin, které je uživatel členem. Pokud dvakrát kliknete na jednu z těchto skupin v seznamu, zobrazí se seznam vlastností této skupiny. Seznam primárních vlastností nezobrazuje samotný sekundární list. Požaduje, aby hostitel zobrazil sekundární list odesláním WM_DSA_SHEET_CREATE_NOTIFY zprávy do okna identifikovaného hwndHidden člen PROPSHEETCFG struktury. wParam zprávy WM_DSA_SHEET_CREATE_NOTIFY je ukazatel na strukturu DSA_SEC_PAGE_INFO, která obsahuje informace o sekundárním seznamu vlastností a objektu, který představuje. V reakci na tuto zprávu musí hostitel seznamu vlastností zobrazit sekundární seznam vlastností stejným způsobem jako výše. Po zpracování zprávy WM_DSA_SHEET_CREATE_NOTIFY musí příjemce zprávy uvolnit strukturu DSA_SEC_PAGE_INFO předáním wParam hodnotu LocalFree funkce.
Duplikování chování objektu CLSID_DsPropertyPages
Duplikování chování objektu CLSID_DsPropertyPages
- Zobrazení výčtu hodnot v adminPropertyPages nebo shellPropertyPages atribut pro specifikátor zobrazení třídy objektu. Každá hodnota je řetězec, který obsahuje číslo následované čárkou, následovanou řetězcovou reprezentací identifikátoru třídy rozšíření stránky vlastnosti. Další informace o formátu stránek vlastností zobrazit specifikátor hodnoty, naleznete v tématu Registrace objektu COM stránky vlastností v specifikátoru zobrazení.
- Převeďte každý řetězec identifikátoru třídy na CLSID pomocí funkce CLSIDFromString.
- Seřaďte identifikátory třídy rozšíření podle čísla, které předchází každému řetězci identifikátoru třídy v hodnotě atributu. Pokud jsou dvě čísla stejná, seřaďte identifikátory tříd v pořadí, v jakém jsou hodnoty atributů získány ze serveru služby Active Directory.
- Vytvořte výčet identifikátorů třídy rozšíření a vytvořte instanci každého rozšíření.
- Pro každé rozšíření v pořadí seřazené výše zavolejte rozšíření IShellExtInit::Initialize se stejnými informacemi popsanými v kroku 4 postupu Hostování seznamu vlastností Uživatelé a počítače služby Active Directory.
- Pro každé rozšíření v pořadí seřazené výše zavolejte rozšíření IShellPropSheetExt::AddPages se stejnými informacemi popsanými v kroku 5 postupu Hostování seznamu vlastností Uživatelé a počítače služby Active Directory.
Pokud je to možné, použijte objekt CLSID_DsPropertyPages k vytvoření stránek místo toho, abyste to udělali ručně. CLSID_DsPropertyPages byla optimalizována a bude správně zpracovávat případy selhání, například když pro aktuální národní prostředí není k dispozici žádný specifikátor zobrazení. Objekt CLSID_DsPropertyPages se také může v budoucnu změnit, což znamená, že seznamy vlastností nemusí přesně odpovídat těm, které zobrazují modul snap-in Uživatelé a počítače služby Active Directory konzoly MMC.
Speciální programovací prvky
V současné době nejsou v publikovaném souboru hlaviček definovány následující programovací prvky. Pokud chcete tyto prvky použít, musíte je definovat sami v přesném formátu zobrazeném na konkrétní referenční stránce.
- CFSTR_DS_PROPSHEETCONFIG
- PROPSHEETCFG
- WM_DSA_SHEET_CLOSE_NOTIFY
- WM_DSA_SHEET_CREATE_NOTIFY
- DSA_SEC_PAGE_INFO
Příklad kódu
Následující příklad kódu jazyka C++ ukazuje bezpečný způsob, jak definovat tyto prvky, které budou fungovat i v případě, že jsou tyto prvky definovány v publikovaném souboru hlaviček v budoucnu.
#ifndef CFSTR_DS_PROPSHEETCONFIG
#define CFSTR_DS_PROPSHEETCONFIG_W L"DsPropSheetCfgClipFormat"
#define CFSTR_DS_PROPSHEETCONFIG_A "DsPropSheetCfgClipFormat"
#ifdef UNICODE
#define CFSTR_DS_PROPSHEETCONFIG CFSTR_DS_PROPSHEETCONFIG_W
#else
#define CFSTR_DS_PROPSHEETCONFIG CFSTR_DS_PROPSHEETCONFIG_A
#endif //UNICODE
#endif //CFSTR_DS_PROPSHEETCONFIG
#ifndef WM_ADSPROP_SHEET_CREATE
#define WM_ADSPROP_SHEET_CREATE (WM_USER + 1108)
#endif
#ifndef WM_DSA_SHEET_CREATE_NOTIFY
#define WM_DSA_SHEET_CREATE_NOTIFY (WM_USER + 6)
#endif
#ifndef WM_DSA_SHEET_CLOSE_NOTIFY
#define WM_DSA_SHEET_CLOSE_NOTIFY (WM_USER + 5)
#endif
#ifndef DSA_SEC_PAGE_INFO
typedef struct _DSA_SEC_PAGE_INFO
{
HWND hwndParentSheet;
DWORD offsetTitle;
DSOBJECTNAMES dsObjectNames;
} DSA_SEC_PAGE_INFO, *PDSA_SEC_PAGE_INFO;
#endif //DSA_SEC_PAGE_INFO
#ifndef PROPSHEETCFG
typedef struct _PROPSHEETCFG
{
LONG_PTR lNotifyHandle;
HWND hwndParentSheet;
HWND hwndHidden;
WPARAM wParamSheetClose;
} PROPSHEETCFG, *PPROPSHEETCFG;
#endif //PROPSHEETCFG