WindowsXP-SP1/inetcore/connectionwizard/icwutil/walker.h
2020-09-30 16:53:49 +02:00

151 lines
5.2 KiB
C++

//**********************************************************************
// File name: WALKER.H
//
// Definition of COleSite
//
// Copyright (c) 1992 - 1996 Microsoft Corporation. All rights reserved.
//**********************************************************************
#if !defined( _WALKER_H_ )
#define _WALKER_H_
#include <mshtml.h>
class CWalker : public IPropertyNotifySink, IOleClientSite, IDispatch
{
private:
ULONG m_cRef; //Reference count
public:
CWalker()
{
m_cRef = 1;
m_hrConnected = CONNECT_E_CANNOTCONNECT;
m_dwCookie = 0;
m_pCP = NULL;
m_pMSHTML = NULL;
m_pPageIDForm = NULL;
m_pBackForm = NULL;
m_pPageTypeForm = NULL;
m_pNextForm = NULL;
m_pPageFlagForm = NULL;
m_hEventTridentDone = 0;
}
~CWalker()
{
if (m_pMSHTML)
m_pMSHTML->Release();
if (m_pPageIDForm)
m_pPageIDForm->Release();
if (m_pBackForm)
m_pBackForm->Release();
if (m_pPageTypeForm)
m_pPageTypeForm->Release();
if (m_pNextForm)
m_pNextForm->Release();
if (m_pPageFlagForm)
m_pPageFlagForm->Release();
}
// IUnknown methods
STDMETHOD(QueryInterface)(REFIID riid, LPVOID* ppv);
STDMETHOD_(ULONG, AddRef)();
STDMETHOD_(ULONG, Release)();
// IPropertyNotifySink methods
STDMETHOD(OnChanged)(DISPID dispID);
STDMETHOD(OnRequestEdit)(DISPID dispID)
{ return NOERROR; }
// IOleClientSite methods
STDMETHOD(SaveObject)(void) { return E_NOTIMPL; }
STDMETHOD(GetMoniker)(DWORD dwAssign,
DWORD dwWhichMoniker,
IMoniker** ppmk)
{ return E_NOTIMPL; }
STDMETHOD(GetContainer)(IOleContainer** ppContainer)
{ return E_NOTIMPL; }
STDMETHOD(ShowObject)(void)
{ return E_NOTIMPL; }
STDMETHOD(OnShowWindow)(BOOL fShow)
{ return E_NOTIMPL; }
STDMETHOD(RequestNewObjectLayout)(void)
{ return E_NOTIMPL; }
// IDispatch method
STDMETHOD(GetTypeInfoCount)(UINT* pctinfo)
{ return E_NOTIMPL; }
STDMETHOD(GetTypeInfo)(UINT iTInfo,
LCID lcid,
ITypeInfo** ppTInfo)
{ return E_NOTIMPL; }
STDMETHOD(GetIDsOfNames)(REFIID riid,
LPOLESTR* rgszNames,
UINT cNames,
LCID lcid,
DISPID* rgDispId)
{ return E_NOTIMPL; }
STDMETHOD(Invoke)(DISPID dispIdMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS __RPC_FAR *pDispParams,
VARIANT __RPC_FAR *pVarResult,
EXCEPINFO __RPC_FAR *pExcepInfo,
UINT __RPC_FAR *puArgErr);
// Additional class methods
HRESULT Walk ();
HRESULT AttachToDocument (IWebBrowser2* lpWebBrowser);
HRESULT AttachToMSHTML (BSTR bstrURL);
HRESULT ExtractUnHiddenText (BSTR* pbstrText);
HRESULT Detach ();
HRESULT InitForMSHTML ();
HRESULT TermForMSHTML ();
HRESULT LoadURLFromFile (BSTR bstrURL);
HRESULT ProcessOLSFile (IWebBrowser2* lpWebBrowser);
HRESULT get_PageType (LPDWORD pdwPageType);
HRESULT get_IsQuickFinish (BOOL* pbIsQuickFinish);
HRESULT get_PageFlag (LPDWORD pdwPageFlag);
HRESULT get_PageID (BSTR* pbstrPageID);
HRESULT get_URL (LPTSTR lpszURL, BOOL bForward);
HRESULT get_IeakIspFile (LPTSTR lpszIspFile);
HRESULT get_FirstFormQueryString (LPTSTR lpszQuery);
DWORD m_dwCookie;
LPCONNECTIONPOINT m_pCP;
HRESULT m_hrConnected;
IHTMLFormElement* get_pNextForm() { return m_pNextForm; }
IHTMLFormElement* get_pBackForm() { return m_pBackForm; }
private:
HRESULT getQueryString(IHTMLFormElement *pForm,
LPTSTR lpszQuery);
void GetInputValue(LPTSTR lpszName, BSTR *pVal, UINT index, IHTMLFormElement *pForm);
protected:
IHTMLDocument2* m_pTrident; // An instance of MSHTML that we CoCreated
IHTMLDocument2* m_pMSHTML; // A ref of m_pTrident, OR a QI for the WebBrowser's Document
// These elements will contain the navigation information we need
IHTMLFormElement* m_pPageIDForm;
IHTMLFormElement* m_pBackForm;
IHTMLFormElement* m_pPageTypeForm;
IHTMLFormElement* m_pNextForm;
IHTMLFormElement* m_pPageFlagForm;
HANDLE m_hEventTridentDone;
};
#endif