//+---------------------------------------------------------------------------- // // Class: CDsCACertPage //+---------------------------------------------------------------------------- // // Windows NT Directory Service Property Pages // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1999 // // File: caprop.h // // Contents: CA DS object property pages // // Classes: CDsCACertPage // // History: 16-Mar-99 petesk copied from bryanwal // //----------------------------------------------------------------------------- #ifndef _CAPROP_H_ #define _CAPROP_H_ #include "genpage.h" #include #include #include "certifct.h" #include #include enum { CERTCOL_ISSUED_TO = 0, CERTCOL_ISSUED_BY, CERTCOL_PURPOSES, CERTCOL_EXP_DATE }; // // Purpose: property page object class for the User Certificates page. // //----------------------------------------------------------------------------- class CDsCACertPage : public CAutoDeletePropPage { public: enum { IID_DEFAULT = IDD_CACERTS }; CDsCACertPage(LPWSTR wszObjectDN, UINT uIDD = IDD_CACERTS); virtual ~CDsCACertPage(void); // // Instance specific wind proc // LRESULT DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); private: CString m_strObjectDN; CRYPTUI_SELECTCERTIFICATE_STRUCT m_selCertStruct; HBITMAP m_hbmCert; HIMAGELIST m_hImageList; int m_nCertImageIndex; HRESULT AddListViewColumns (); HCERTSTORE m_hCertStore; public: // Overrides BOOL OnApply(void ); BOOL OnInitDialog(); protected: // Implementation void OnDestroy(); BOOL OnCommand(WPARAM wParam, LPARAM lParam); BOOL OnNotify(UINT idCtrl, NMHDR* pNMHDR); int MessageBox (int caption, int text, UINT flags); HRESULT AddCertToStore (PCCERT_CONTEXT pCertContext); void OnNotifyItemChanged (LPNMLISTVIEW item); void OnNotifyStateChanged (LPNMLVODSTATECHANGE pnlvo); void EnableControls (); void DisplaySystemError (DWORD dwErr, int iCaptionText); HRESULT InsertCertInList (CCertificate* pCert, int nItem); void RefreshItemInList (CCertificate * pCert, int nItem); CCertificate* GetSelectedCertificate (int& nSelItem); HRESULT PopulateListView (); HRESULT OnDeleteItemCertList (LPNMLISTVIEW pNMListView); HRESULT OnColumnClickCertList (LPNMHDR pNMHdr); HRESULT OnDblClkCertList (LPNMHDR pNMHdr); HRESULT OnClickedCopyToFile (); HRESULT OnClickedRemove(); HRESULT OnClickedAddFromFile(); HRESULT OnClickedAddFromStore (); HRESULT OnClickedViewCert (); }; ///////////////////////////////////////////////////////////////////////////// // CCAShellExt // // Shell Extension class // class ATL_NO_VTABLE CCAShellExt : public CComObjectRootEx, public CComCoClass, public IShellExtInit, public IShellPropSheetExt, public IContextMenu { public: CCAShellExt() { m_Names = NULL; m_idManage = 0; m_idOpen = 0; m_idExport = 0; } ~CCAShellExt() { if(m_Names) { GlobalFree(m_Names); } } //Simple ALL 1.0 based registry entry DECLARE_REGISTRY( CCAShellExt, _T("CAPESNPN.CCAShellExt.1"), _T("CAPESNPN.CCAShellExt"), IDS_CCASHELLEXT_DESC, THREADFLAGS_APARTMENT) BEGIN_COM_MAP(CCAShellExt) COM_INTERFACE_ENTRY(IShellExtInit) COM_INTERFACE_ENTRY(IShellPropSheetExt) COM_INTERFACE_ENTRY(IContextMenu) END_COM_MAP() // IDfsShell public: // IShellExtInit Methods STDMETHOD (Initialize) ( IN LPCITEMIDLIST pidlFolder, // Points to an ITEMIDLIST structure IN LPDATAOBJECT lpdobj, // Points to an IDataObject interface IN HKEY hkeyProgID // Registry key for the file object or folder type ); //IShellPropSheetExt methods STDMETHODIMP AddPages ( IN LPFNADDPROPSHEETPAGE lpfnAddPage, IN LPARAM lParam ); STDMETHODIMP ReplacePage ( IN UINT uPageID, IN LPFNADDPROPSHEETPAGE lpfnReplaceWith, IN LPARAM lParam ); // IContextMenu methods STDMETHODIMP GetCommandString ( UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax ); STDMETHODIMP InvokeCommand ( LPCMINVOKECOMMANDINFO lpici ); STDMETHODIMP QueryContextMenu ( HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags ); private: STDMETHODIMP _SpawnCertServerSnapin(LPWSTR wszServiceDN); STDMETHODIMP _CRLFromDN(LPWSTR wszCDPDN, PCCRL_CONTEXT *ppCRL); STDMETHODIMP _LaunchCRLDialog(PCCRL_CONTEXT pCRL); STDMETHODIMP _OnExportCRL (PCCRL_CONTEXT pCRL); LPDSOBJECTNAMES m_Names; DWORD m_idManage; DWORD m_idOpen; DWORD m_idExport; }; #endif