mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.0 KiB
95 lines
2.0 KiB
#include "stdafx.h"
|
|
#include "Notify.h"
|
|
|
|
extern
|
|
HRESULT
|
|
SendMail
|
|
(
|
|
IN LPCTSTR lpszFrom,
|
|
IN LPCTSTR lpszTo,
|
|
IN LPCTSTR lpszSubject,
|
|
IN LPCTSTR lpszMessage,
|
|
IN short nImportance
|
|
);
|
|
|
|
CNotify::CNotify(LPCTSTR lpszNotifyWho, LPCTSTR lpszNotifyWhat)
|
|
{
|
|
_ASSERTE(lpszNotifyWho != NULL);
|
|
|
|
m_lpszNotifyWho = new TCHAR[_tcslen(lpszNotifyWho) + 1];
|
|
_ASSERTE(m_lpszNotifyWho != NULL);
|
|
|
|
if(m_lpszNotifyWho) _tcscpy(m_lpszNotifyWho, lpszNotifyWho);
|
|
|
|
m_lpszNotifyWhat = new TCHAR[_tcslen(lpszNotifyWhat) + 1];
|
|
_ASSERTE(m_lpszNotifyWhat != NULL);
|
|
|
|
if(m_lpszNotifyWhat) _tcscpy(m_lpszNotifyWhat, lpszNotifyWhat);
|
|
}
|
|
|
|
CNotify::~CNotify()
|
|
{
|
|
if(m_lpszNotifyWho) delete [] m_lpszNotifyWho;
|
|
if(m_lpszNotifyWhat) delete [] m_lpszNotifyWhat;
|
|
|
|
m_lpszNotifyWho = NULL;
|
|
m_lpszNotifyWhat = NULL;
|
|
}
|
|
|
|
DWORD CNotify::Notify()
|
|
{
|
|
_ASSERTE(m_lpszNotifyWho!= NULL);
|
|
|
|
DWORD dwLastRet = 0L;
|
|
|
|
if(!m_lpszNotifyWho) return dwLastRet;
|
|
|
|
if(ShouldNetSend() == true){
|
|
|
|
dwLastRet = NetSend();
|
|
}
|
|
else {
|
|
|
|
dwLastRet = EMail();
|
|
}
|
|
|
|
return dwLastRet;
|
|
}
|
|
|
|
DWORD CNotify::NetSend()
|
|
{
|
|
DWORD dwLastRet = 0L;
|
|
TCHAR *lpszCmd = NULL;
|
|
|
|
_ASSERTE(m_lpszNotifyWho != NULL);
|
|
|
|
if(!m_lpszNotifyWho) return dwLastRet;
|
|
|
|
lpszCmd = new TCHAR[ _tcslen(_T("net send")) + _tcslen(m_lpszNotifyWho) + _tcslen(m_lpszNotifyWhat) + 3]; // room for blank space and null
|
|
dwLastRet = GetLastError();
|
|
_ASSERTE(lpszCmd != NULL);
|
|
|
|
if(!lpszCmd) return dwLastRet;
|
|
|
|
_stprintf(lpszCmd, _T("%s %s %s"), _T("net send"), m_lpszNotifyWho, m_lpszNotifyWhat);
|
|
_tsystem(lpszCmd);
|
|
|
|
if(lpszCmd) delete [] lpszCmd;
|
|
|
|
return (dwLastRet = 0L);
|
|
}
|
|
|
|
HRESULT CNotify::EMail()
|
|
{
|
|
// return S_OK;
|
|
return SendMail(_T("ExceptionMonitor8.0"), m_lpszNotifyWho, _T("Exception Occured"), m_lpszNotifyWhat, 1);
|
|
}
|
|
|
|
bool CNotify::ShouldNetSend()
|
|
{
|
|
bool bRet = true; // Assume NetSend.
|
|
|
|
if(_tcschr(m_lpszNotifyWho, _T('@')) != NULL) bRet = false;
|
|
|
|
return bRet;
|
|
}
|