#define ODS(sz) OutputDebugString(sz) #ifndef _SHELLEXT_H #define _SHELLEXT_H #define STR_GUID _T("{5a61f7a0-cde1-11cf-9113-00aa00425c62}") DEFINE_GUID(CLSID_ShellExtension, 0x5a61f7a0L, 0xcde1, 0x11cf, 0x91, 0x13, 0x00, 0xaa, 0x00, 0x42, 0x5c, 0x62 ); #define STR_NAME _T("IIS Shell Extention") #define STR_THREAD_MODEL _T("Apartment") //================================================================================== // this class factory object creates context menu handlers for Windows 95 shell class CShellExtClassFactory : public IClassFactory { protected: ULONG m_cRef; public: CShellExtClassFactory(); ~CShellExtClassFactory(); //IUnknown members STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); //IClassFactory members STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *); STDMETHODIMP LockServer(BOOL); }; typedef CShellExtClassFactory *LPCSHELLEXTCLASSFACTORY; //================================================================================== // this is the actual OLE Shell context menu handler class CShellExt : public IShellExtInit, IShellPropSheetExt { public: TCHAR m_szPropSheetFileUserClickedOn[MAX_PATH*2]; protected: ULONG m_cRef; LPDATAOBJECT m_pDataObj; public: CShellExt(); ~CShellExt(); //IUnknown members STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); //IShellExtInit methods STDMETHODIMP Initialize(LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj, HKEY hKeyID); //IShellPropSheetExt methods STDMETHODIMP AddPages(LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam); STDMETHODIMP ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam); public: // From here on down it is stuff that is specifict to the internal function of the page // unlike the routines above, these are implemented in webpg.cpp BOOL OnMessage(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void SinkNotify( /* [in] */ DWORD dwMDNumElements, /* [size_is][in] */ MD_CHANGE_OBJECT __RPC_FAR pcoChangeList[ ]); HWND m_hwnd; protected: void OnFinalRelease(); BOOL OnCommand(HWND hDlg, WPARAM wParam, LPARAM lParam); // control event handling routines void OnRdoNot(); void OnRdoShare(); void OnAdd(); void OnEdit(); void OnRemove(); void OnSelchangeComboServer(); // control notification handling routines BOOL OnListBoxNotify(HWND hDlg, int idCtrl, WORD code, HWND hwndControl); // update the state of the server void UpdateState(); // enable items as appropriate void EnableItems(); // initialization void Init(); BOOL InitControls(); void BuildAliasList(); void RecurseAddVDItems( CWrapMetaBase* pmb, LPCTSTR szMB ); void EmptyList(); void InitSeverInfo(); BOOL InitializeSink(); void TerminateSink(); void ResetListContent(); // access to the server-based root string void GetRootString( LPTSTR sz, DWORD cchMax ); void GetVirtServerString( LPTSTR sz, DWORD cchMax ); // CDialog simulation routines void UpdateData( BOOL fDialogToData ); // initialize and uninitialize the metabase connections void CleanUpConnections(); BOOL FInitMetabase(); BOOL FCloseMetabase(); // support for shutdown notification void OnTimer( UINT nIDEvent ); void EnterShutdownMode(); BOOL FIsW3Running(); void CheckIfServerIsRunningAgain(); void InspectServerList(); // test if we have proper access to the metabase BOOL FIsAdmin(); // the property page... HPROPSHEETPAGE m_hpage; // handles to the page's controls HWND m_icon_pws; HWND m_icon_iis; HWND m_static_share_on_title; HWND m_ccombo_server; HWND m_cbtn_share; HWND m_cbtn_not; HWND m_cstatic_alias_title; HWND m_cbtn_add; HWND m_cbtn_remove; HWND m_cbtn_edit; HWND m_clist_list; HWND m_static_status; // data from the controls int m_int_share; int m_int_server; // Server information BOOL m_fIsPWS; DWORD m_state; BOOL m_fInitialized; // sink things DWORD m_dwSinkCookie; CImpIMSAdminBaseSink* m_pEventSink; IConnectionPoint* m_pConnPoint; BOOL m_fInitializedSink; BOOL m_fShutdownMode; IMSAdminBase* m_pMBCom; CEditDirectory* m_pEditAliasDlg; }; typedef CShellExt *LPCSHELLEXT; #endif //_SHELLEXT_H