Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

186 lines
4.9 KiB

#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