www.pudn.com > NetPaw.rar > NetpawHelper.h
// NetpawHelper.h : CNetpawHelper µÄÉùÃ÷ #pragma once #include "resource.h" // Ö÷·ûºÅ #include// IID_IWebBrowser2, DIID_DWebBrowserEvents2, etc. #include // DISPID_DOCUMENTCOMPLETE, etc. #include // DOM interfaces #include "NPCapture.h" #include "atlcomcli.h" #include "filemapping.h" struct URLDATA_S { TCHAR szDownldUrl[MAX_PATH]; TCHAR szReferer[MAX_PATH]; TCHAR szWebInfo[MAX_PATH/2]; }; // CNetpawHelper class ATL_NO_VTABLE CNetpawHelper : public CComObjectRootEx , public CComCoClass , public IObjectWithSiteImpl , public IDispEventImpl<1, CNetpawHelper, &DIID_DWebBrowserEvents2, &LIBID_SHDocVw, 1, 1>, public IDispatchImpl { public: CNetpawHelper() : m_bAdvised(false) { } // macros for the objects DECLARE_REGISTRY_RESOURCEID(IDR_NETPAWHELPER) DECLARE_NOT_AGGREGATABLE(CNetpawHelper) BEGIN_COM_MAP(CNetpawHelper) COM_INTERFACE_ENTRY(INetpawHelper) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IObjectWithSite) END_COM_MAP() // event map of DIID_DWebBrowserEvents2, see "exdispid.h" BEGIN_SINK_MAP(CNetpawHelper) SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_FILEDOWNLOAD, OnFileDownload) END_SINK_MAP() DECLARE_PROTECT_FINAL_CONSTRUCT() HRESULT FinalConstruct() { return S_OK; } void FinalRelease() { } private: CComPtr m_spWebBrowser; bool m_bAdvised; CFileMapping m_obFileMapping; // run netpaw.exe and pass the parameters to it void TrigerNetPaw(); public: // IObjectWithSite implement STDMETHOD(SetSite)(IUnknown *pUnkSite); //============DWebBrowserEvents2 events handler, see "exdispid.h"============= // before open download file dialog void STDMETHODCALLTYPE OnFileDownload( VARIANT_BOOL *ActiveDocument, VARIANT_BOOL *Cancel ); // INetpawHelper implement STDMETHOD(AddUrl)(BSTR bsUrl, BSTR bsInfo, BSTR bsReferer); }; OBJECT_ENTRY_AUTO(__uuidof(NetpawHelper), CNetpawHelper)