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)