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

📄 smsmessage.cpp

📁 在PDA上打开收件箱,要将ReadSMS.dll拷到此程序部署到PDA的目录下
💻 CPP
字号:
#include "SmsMessage.h"
#include "MAPIEx.h"
SmsMessage::SmsMessage()
{
	m_pMessage=NULL;
	m_pRecipients=NULL;
	m_pMAPI=NULL;
	m_entryID.cb=0;
	SetEntryID(NULL);
}
SmsMessage::SmsMessage(SmsMessage& message)
{
	m_pMessage=NULL;
	m_pRecipients=NULL;
	m_pMAPI=NULL;
	m_entryID.cb=0;
	*this=message;
}

SmsMessage::~SmsMessage()
{
	Close();
}

void SmsMessage::SetEntryID(SBinary* pEntryID)
{
	if(m_entryID.cb) delete [] m_entryID.lpb;
	m_entryID.lpb=NULL;

	if(pEntryID) {
		m_entryID.cb=pEntryID->cb;
		if(m_entryID.cb) {
			m_entryID.lpb=new BYTE[m_entryID.cb];
			memcpy(m_entryID.lpb,pEntryID->lpb,m_entryID.cb);
		}
	} else {
		m_entryID.cb=0;
	}
}
BOOL SmsMessage::Open(MAPIEx* pMAPI,SBinary entryID,DWORD dwMessageFlags)
{
	Close();
	m_pMAPI=pMAPI;
	m_dwMessageFlags=dwMessageFlags;
	ULONG ulObjType;
	if(m_pMAPI->GetFolder()->OpenEntry(entryID.cb,(LPENTRYID)entryID.lpb,NULL,MAPI_BEST_ACCESS,&ulObjType,(LPUNKNOWN*)&m_pMessage)!=S_OK)
	{
		return FALSE;
	}
	SetEntryID(&entryID);
	FillSenderName();
	FillSenderEmail();
	FillSubject();
	
	return TRUE;
}
void SmsMessage::Close()
{
	SetEntryID(NULL);
	RELEASE(m_pMessage);
	m_pMAPI=NULL;
}
HRESULT SmsMessage::GetProperty(ULONG ulProperty,LPSPropValue &prop)
{
	ULONG ulPropCount;
	ULONG p[2]={ 1,ulProperty };
	return m_pMessage->GetProps((LPSPropTagArray)p, MAPI_UNICODE, &ulPropCount, &prop);
}
void SmsMessage::FillSenderName()
{
	LPSPropValue pProp;
	if(GetProperty(PR_SENDER_NAME,pProp)==S_OK) {
		m_strSenderName=MAPIEx::GetValidString(*pProp);
		MAPIFreeBuffer(pProp);
	}
	else m_strSenderName=_T("");
}
void SmsMessage::FillSubject()
{
	LPSPropValue pProp;
	if(GetProperty(PR_SUBJECT,pProp)==S_OK) {
		m_strSubject=MAPIEx::GetValidString(*pProp);
		MAPIFreeBuffer(pProp);
	}
	else m_strSubject=_T("");
}
void SmsMessage::FillSenderEmail()
{
	LPSPropValue pProp;
	if(GetProperty(PR_SENDER_EMAIL_ADDRESS,pProp)==S_OK) {
		m_strSenderEmail=MAPIEx::GetValidString(*pProp);
		MAPIFreeBuffer(pProp);
	}
	else m_strSenderEmail=_T("");

}
LPCTSTR SmsMessage::GetSenderName()
{
	LPSPropValue pProp;
	if(GetProperty(PR_SENDER_NAME,pProp)==S_OK) {
		m_strSenderName=MAPIEx::GetValidString(*pProp);
		MAPIFreeBuffer(pProp);
	}
	else m_strSenderName=_T("");
	return m_strSenderName;
}
LPCTSTR SmsMessage::GetSubject()
{
	LPSPropValue pProp;
	if(GetProperty(PR_SUBJECT,pProp)==S_OK) {
		m_strSubject=MAPIEx::GetValidString(*pProp);
		MAPIFreeBuffer(pProp);
	}
	else m_strSubject=_T("");
	return m_strSubject;
}
LPCTSTR SmsMessage::GetSenderEmail()
{
	LPSPropValue pProp;
	if(GetProperty(PR_SENDER_EMAIL_ADDRESS,pProp)==S_OK) {
		m_strSenderEmail=MAPIEx::GetValidString(*pProp);
		MAPIFreeBuffer(pProp);
	}
	else m_strSenderEmail=_T("");
	return m_strSenderEmail;

}
BOOL SmsMessage::GetReceivedTime(SYSTEMTIME& tmReceived)
{
	LPSPropValue pProp;
	if(GetProperty(PR_MESSAGE_DELIVERY_TIME,pProp)==S_OK) {
		FILETIME tmLocal;
		FileTimeToLocalFileTime(&pProp->Value.ft,&tmLocal);
		FileTimeToSystemTime(&tmLocal,&tmReceived);
		MAPIFreeBuffer(pProp);
		return TRUE;
	}
	return FALSE;
}

BOOL SmsMessage::GetReceivedTime(LPCTSTR& strReceivedTime,LPCTSTR szFormat)
{
	SYSTEMTIME tm;
	if(GetReceivedTime(tm)) {
		TCHAR szTime[256];
		if(!szFormat) szFormat=_T("yyyy-MM-dd HH:mm:ss");
		GetDateFormat(LOCALE_SYSTEM_DEFAULT,0,&tm,szFormat,szTime,256);
		GetTimeFormat(LOCALE_SYSTEM_DEFAULT,0,&tm,szTime,szTime,256);
		strReceivedTime=szTime;
		return TRUE;
	}
	return FALSE;
}

BOOL SmsMessage::GetSubmitTime(SYSTEMTIME& tmSubmit)
{
	LPSPropValue pProp;
	if(GetProperty(PR_LAST_MODIFICATION_TIME,pProp)==S_OK) {
		FILETIME tmLocal;
		FileTimeToLocalFileTime(&pProp->Value.ft,&tmLocal);
		FileTimeToSystemTime(&tmLocal,&tmSubmit);
		MAPIFreeBuffer(pProp);
		return TRUE;
	}
	return FALSE;
}

BOOL SmsMessage::GetSubmitTime(LPCTSTR& strSubmitTime,LPCTSTR szFormat)
{
	SYSTEMTIME tm;
	if(GetSubmitTime(tm)) {
		TCHAR szTime[256];
		if(!szFormat) szFormat=_T("yyyy-MM-dd HH:mm:ss");
		GetDateFormat(LOCALE_SYSTEM_DEFAULT,0,&tm,szFormat,szTime,256);
		GetTimeFormat(LOCALE_SYSTEM_DEFAULT,0,&tm,szTime,szTime,256);
		strSubmitTime=szTime;
		return TRUE;
	}
	return FALSE;
}
BOOL SmsMessage::GetRecipients()
{
	if(!m_pMessage) return FALSE;
	RELEASE(m_pRecipients);

	if(m_pMessage->GetRecipientTable(MAPI_UNICODE,&m_pRecipients)!=S_OK) return FALSE;

	return TRUE;
}

BOOL SmsMessage::GetNextRecipient(LPCTSTR& strName,LPCTSTR& strEmail,int& nType)
{
	if(!m_pRecipients) return FALSE;

	LPSRowSet pRows=NULL;
	BOOL bResult=FALSE;
	if(m_pRecipients->QueryRows(1,0,&pRows)==S_OK) {
		if(pRows->cRows) {
			nType=pRows->aRow[0].lpProps[PROP_RECIPIENT_TYPE].Value.ul;
			strName=MAPIEx::GetValidString(pRows->aRow[0].lpProps[PROP_RECIPIENT_NAME]);
			strEmail=MAPIEx::GetValidString(pRows->aRow[0].lpProps[PROP_RECIPIENT_EMAIL]);
			bResult=TRUE;
		}
		FreeProws(pRows);
	}
	MAPIFreeBuffer(pRows);
	return bResult;
}

⌨️ 快捷键说明

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