Limiting the Property Sheet Display
The property sheet should display only on the relevant application filter.
To limit the property sheet display
Select a unique name for the application filter; for example, its GUID.
Add the folder containing the file Msfpccom.dll (<SDK installation root>\bin) to the include path.
In Stdafx.h add the following #import statement:
#import "msfpccom.dll" named_guids
The #import directive is used to incorporate information from a type library. The content of the type library is converted into C++ classes, mostly describing the COM interfaces.
In the .cpp file where your snap-in is defined, add the if statement in the following example code to the method that creates property pages and change the GUID to the GUID of your application filter:
HRESULT CFilterSnapInExtData::CreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, long handle, IUnknown* pUnk, DATA_OBJECT_TYPES type) { FPCLib::IFPCSnapinNodePtr spiSnapinNode(m_pDataObject); FPCLib::IFPCApplicationFilterPtr spiApplicationFilter(spiSnapinNode->CurrentObject); _bstr_t bstrGUID(spiApplicationFilter->get_Guid()); // if (type == CCT_SCOPE || type == CCT_RESULT) if (bstrGUID == _bstr_t("{7CCF6FF0-D995-4da1-B452-4228047B2D1D}")) // Filter GUID { CFilterSnapInPage* pPage = new CFilterSnapInPage(handle, true, _T("FilterSnapIn")); lpProvider->AddPage(pPage->Create()); // The second parameter to the property page class constructor // should be true for only one page. // TODO : Add code here to add additional pages return S_OK; } return E_UNEXPECTED; }
Build.
Test. Run Forefront TMG Management. Notice that the property sheet appears only on the appropriate filter.
Build date: 7/12/2010