⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oltools.h

📁 是用MAPI 实现对OUTLOOK 收发邮件的监控
💻 H
字号:
#pragma once

#include "OutlookInterface.h"
#include "zip.h"

class COutlookButton : public IDispatch 
{
public:
	COutlookButton(CComPtr <Office::CommandBarControl> pButton);
	virtual ~COutlookButton();

	// IUnknown Implementation
    virtual HRESULT __stdcall QueryInterface(REFIID riid, void ** ppv);
    virtual ULONG   __stdcall AddRef(void);
    virtual ULONG   __stdcall Release(void);

    // Methods:

	// IDispatch Implementation
    virtual HRESULT __stdcall GetTypeInfoCount(UINT* pctinfo);
    virtual HRESULT __stdcall GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo);
    virtual HRESULT __stdcall GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId);
    virtual HRESULT __stdcall Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr);


	BOOL						SetupConnection(IDispatch *pDisp);
	void						ShutDown();

	DWORD								m_dwCookie;
	CComPtr <Office::CommandBarControl> m_pButton;
	IConnectionPoint					*m_pCP;
	ULONG								m_cRef;
}; 

class CAttachment
{
public:
	CAttachment();
	CAttachment(CComPtr<IAttach> &pAttachPtr,
				ULONG			 ulMethod,
				BOOL			 bIgnoreAttachPtr=FALSE,
				CString			 csAttachPathName="",
				CString			 csAttachLongPathName="");
	
	~CAttachment();
	void		SetAttachNum(ULONG ulIndex)								{ m_ulIndex = ulIndex; };
	ULONG		GetAttachNum()											{ return m_ulIndex; };
	HRESULT		SaveToFile(CString &csPath);
	ULONG		GetAttachMethod()										{ return m_ulAttachMethod; };
	CString		GetPathName()											{ return m_csAttachPathName; };
	CString		GetLongPathName()										{ return m_csAttachLongPathName; };
	HRESULT		CreateAttachment(CComPtr<IMessage> &pMessagePtr);
protected:
	CComPtr<IAttach>	m_pAttachPtr;
	ULONG				m_ulAttachMethod;
	CString				m_csAttachPathName;
	CString				m_csAttachLongPathName;
	ULONG				m_ulIndex;
	BOOL				m_bNoAttachment;
};


class COLTools : public IExchExt, 
						IExchExtSessionEvents, 
						IExchExtMessageEvents
{
public:
	COLTools(void);
	~COLTools(void);

	// IExchExt
	STDMETHODIMP_(ULONG)	AddRef();
	STDMETHODIMP_(ULONG)	Release();
	STDMETHODIMP			QueryInterface(REFIID					riid,
										   void**					ppvObj);
	STDMETHODIMP			Install(IExchExtCallback				*lpExchangeCallback,
									ULONG							mcontext,
									ULONG							ulFlags);
	// IExchExtSessionEvents
	STDMETHODIMP			OnDelivery(IExchExtCallback				*lpExchangeCallback);

	// IExchExtMessageEvents
	STDMETHODIMP			OnRead(IExchExtCallback					*lpExchangeCallback);
	STDMETHODIMP			OnReadComplete(IExchExtCallback			*lpExchangeCallback,
										   ULONG					ulFlags);
	STDMETHODIMP			OnWrite(IExchExtCallback				*lpExchangeCallback);
	STDMETHODIMP			OnWriteComplete(IExchExtCallback		*lpExchangeCallback,
										    ULONG					ulFlags); 
	STDMETHODIMP			OnCheckNames(IExchExtCallback			*lpExchangeCallback);
	STDMETHODIMP			OnCheckNamesComplete(IExchExtCallback	*lpExchangeCallback,
												 ULONG				ulFlags); 
	STDMETHODIMP			OnSubmit(IExchExtCallback				*lpExchangeCallback);
	STDMETHODIMP_(VOID)		OnSubmitComplete(IExchExtCallback		*lpExchangeCallback,
											 ULONG					ulFlags); 
protected:
   HRESULT					GetOutlookApp(IExchExtCallback 		*pmecb,
										  Outlook::_ApplicationPtr 	&rOLAppPtr);
   HRESULT					InstallInterface(IExchExtCallback   *lpExchangeCallback);
   HRESULT					AttachFile(LPMESSAGE pMessage, CString csFile);
   HRESULT					PackFile(CString &csFileName);
 
protected:
	ULONG						m_ulRefCount;
	ULONG						m_ulContext;
	ULONG						m_ulOutlookVersion;
	BOOL						m_bSubmittingMessage;
	COutlookButton				*m_pMyButton;
	Outlook::_ApplicationPtr 	m_OLAppPtr;
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -