187 lines
4.9 KiB
C
187 lines
4.9 KiB
C
|
#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
|