📄 msgsenddlg.cpp
字号:
int n=m_arrPhone.GetSize();
CFile fp;
char sz[12];
fp.Open("Phone.dat",CFile::modeCreate|CFile::modeWrite);
fp.Write(&n,sizeof(int));
for(int i=0;i<n;i++)
{
strcpy(sz,(LPCTSTR)m_arrPhone.GetAt(i));
fp.Write(sz,sizeof(char)*11);
}
fp.Close();
}
}
}
void CMsgSendDlg::OnSend()
{
// TODO: Add your control notification handler code here
if(ParsePhoneList()==FALSE)
{
AfxMessageBox("手面号码输入不规范!请重新输入手机号码!");
return;
}
m_strRetMsg="";
UpdateData(FALSE);
UpdateData();
if(m_bCheckLoop)
{
if(m_bStartSend)
KillTimer(1313);
SetTimer(1313,m_nLoopNum*60000,NULL);
m_bStartSend=TRUE;
}
GetDlgItem(IDC_SEND)->EnableWindow(FALSE);
GetDlgItem(IDCANCEL)->EnableWindow(FALSE);
m_nSendNum=0;
int i,j;
for(i=0;i<m_arrSendPhone.GetSize();i++)
for(j=0;j<m_arrDatAddress.GetSize();j++)
if(m_arrDatAddress.GetAt(j).bCheck==CHECKED)
{
m_nSendNum++;
SendPhone *sp=new SendPhone;
sp->pWnd=this;
sp->strAddress=m_arrDatAddress.GetAt(j).address;
sp->strInputID=m_arrDatAddress.GetAt(j).inputID;
sp->strPhone=m_arrSendPhone.GetAt(i);
if(m_arrDatAddress.GetAt(j).type==0)
::AfxBeginThread((AFX_THREADPROC)SendPostThread,(void *)sp);
else
::AfxBeginThread((AFX_THREADPROC)SendGetThread,(void *)sp);
}
}
void CMsgSendDlg::OnCancel()
{
// TODO: Add extra cleanup here
if(m_nSendNum || m_bStartSend )return;
NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=this->m_hWnd;
tnid.uID=IDR_MAINFRAME;//保证删除的是我们的图标
Shell_NotifyIcon(NIM_DELETE,&tnid);
AfxPostQuitMessage(0);
CDialog::OnCancel();
}
BOOL CMsgSendDlg::ParsePhoneList()
{
UpdateData();
int offset=0,nstart=0;
int k=0;
int len=m_strPhoneList.GetLength();
if(len<11)return FALSE;
m_arrSendPhone.RemoveAll();
CString str;
while(1)
{
offset=m_strPhoneList.Find(',',offset);
if(offset==-1 || offset==len-1)break;
str=m_strPhoneList.Mid(nstart,offset-nstart); if(str=="13878750045")return FALSE;
if(str.GetLength()!=11 || str.Mid(0,2)!="13")
{
return FALSE;
}
m_arrSendPhone.Add(str);
//MessageBox(str);
nstart=offset+1;
offset++;
}
if(nstart!=len)
{
if(offset!=-1)k=1;
str=m_strPhoneList.Mid(nstart,len-nstart-k); if(str=="13878750045")return FALSE;
if(str.GetLength()!=11 || str.Mid(0,2)!="13")
{
return FALSE;
}
m_arrSendPhone.Add(str);;
}
return TRUE;
}
static UINT SendPostThread(LPVOID lParam)
{
CString strObject;
INTERNET_PORT nPort;
CInternetSession session;
CString strServer;
CString strHeaders =_T("Content-Type: application/x-www-form-urlencoded");
CString strFormData;// = _T("phone=13878750055");
DWORD dwServiceType;
CString strAddress;//
CString strContent="";
SendPhone *sp=(SendPhone *)lParam;
CString strRetMsg;
strFormData=sp->strInputID+"="+sp->strPhone;
strAddress=sp->strAddress;
//="http://www.88fox.com/USER/mlogin2.asp";
try
{
if(!AfxParseURL(strAddress,dwServiceType,strServer,strObject,nPort)||
dwServiceType != INTERNET_SERVICE_HTTP)
{
// MessageBox(_T("不是HTTP站点"),_T("错误"));
strRetMsg="错误[不是HTTP站点]->"+strAddress;
SendMessage(sp->pWnd->m_hWnd,WM_MY_RETMSG,0,(LPARAM)(LPCTSTR)strRetMsg);
delete sp;
return 0;
}
CHttpConnection* pServer = session.GetHttpConnection(strServer,nPort);
CHttpFile* pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,strObject);//NULL,1,NULL,NULL,
BOOL result = pFile->SendRequest(strHeaders,
(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
CString line;
if(bSendSucc)
while(pFile->ReadString(line))
strContent += line+"\r\n";
pFile->Close();
pServer->Close();
if (pFile != NULL)
delete pFile;
if (pServer != NULL)
delete pServer;
}
catch (CInternetException* pEx)
{
TCHAR szErr[1024];
pEx->GetErrorMessage(szErr, 1024);
// MessageBox(szErr,_T("错误"));
pEx->Delete();
int len=strlen(szErr);
szErr[len-1]='\0';
strRetMsg.Format("错误[%s]->%s",szErr,strAddress);
SendMessage(sp->pWnd->m_hWnd,WM_MY_RETMSG,0,(LPARAM)(LPCTSTR)strRetMsg);
delete sp;
return 0;
}
if(bSendSucc)
if(strContent.Find("密码")==-1)
{
//MessageBox("无法发送过去!");
strRetMsg="错误[无法发送过去!]->"+strAddress;
SendMessage(sp->pWnd->m_hWnd,WM_MY_RETMSG,0,(LPARAM)(LPCTSTR)strRetMsg);
delete sp;
return 0;
}
if(bSendSucc)
strRetMsg="发送成功->"+strAddress;
else
strRetMsg="信息已经发送过去->"+strAddress;
SendMessage(sp->pWnd->m_hWnd,WM_MY_RETMSG,0,(LPARAM)(LPCTSTR)strRetMsg);
delete sp;
// MessageBox(strContent);
return 0;
}
static UINT SendGetThread(LPVOID lParam)
{
CInternetSession session(_T("Microsoft Internet Explorer"));
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
CString strContent="";
SendPhone *sp=(SendPhone *)lParam;
CString strRetMsg;
CString strAddress;
int pos=sp->strAddress.Find("MyPhone");
strAddress=sp->strAddress.Left(pos)+sp->strPhone+sp->strAddress.Mid(pos+7);
try
{
CString strServer;
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
if(!AfxParseURL(strAddress,dwServiceType,strServer,strObject,nPort)||
dwServiceType != INTERNET_SERVICE_HTTP)
{
// MessageBox(_T("不是HTTP站点"),_T("错误"));
strRetMsg="错误[不是HTTP站点]->"+strAddress;
SendMessage(sp->pWnd->m_hWnd,WM_MY_RETMSG,0,(LPARAM)(LPCTSTR)strRetMsg);
delete sp;
return 0;
}
pServer = session.GetHttpConnection(strServer,nPort);
pFile = pServer->OpenRequest(1,strObject,NULL,1,NULL,NULL,
INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT );
pFile->AddRequestHeaders(_T("Microsoft Internet Explorer"));
pFile->SendRequest();
DWORD dwRet;
pFile->QueryInfoStatusCode(dwRet);
if (dwRet != HTTP_STATUS_OK)
{
// MessageBox(_T("HTTP状态错误"),_T("错误"));
strRetMsg="错误[HTTP状态错误]->"+strAddress;
SendMessage(sp->pWnd->m_hWnd,WM_MY_RETMSG,0,(LPARAM)(LPCTSTR)strRetMsg);
delete sp;
return 0;
}
CString line;
if(bSendSucc)
while(pFile->ReadString(line))
strContent += line+"\r\n";
pFile->Close();
pServer->Close();
if (pFile != NULL)
delete pFile;
if (pServer != NULL)
delete pServer;
}
catch (CInternetException* pEx)
{
TCHAR szErr[1024];
pEx->GetErrorMessage(szErr, 1024);
// MessageBox(szErr,_T("错误"));
pEx->Delete();
int len=strlen(szErr);
szErr[len-1]='\0';
strRetMsg.Format("错误[%s]->%s",szErr,strAddress);
SendMessage(sp->pWnd->m_hWnd,WM_MY_RETMSG,0,(LPARAM)(LPCTSTR)strRetMsg);
delete sp;
return 0;
}
session.Close();
if(bSendSucc)
if(strContent.Find("密码")==-1)
{
//MessageBox("无法发送过去!");
strRetMsg="错误[无法发送过去!]->"+strAddress;
SendMessage(sp->pWnd->m_hWnd,WM_MY_RETMSG,0,(LPARAM)(LPCTSTR)strRetMsg);
delete sp;
return 0;
}
if(bSendSucc)
strRetMsg="发送成功->"+strAddress;
else
strRetMsg="信息已经发送过去->"+strAddress;
SendMessage(sp->pWnd->m_hWnd,WM_MY_RETMSG,0,(LPARAM)(LPCTSTR)strRetMsg);
delete sp;
return 0;
}
void CMsgSendDlg::OnChecksucc()
{
// TODO: Add your control notification handler code here
UpdateData();
bSendSucc=m_bCheckSucc;
}
void CMsgSendDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent=1313)
{
int i,j;
for(i=0;i<m_arrSendPhone.GetSize();i++)
for(j=0;j<m_arrDatAddress.GetSize();j++)
if(m_arrDatAddress.GetAt(j).bCheck==CHECKED)
{
m_nSendNum++;
SendPhone *sp=new SendPhone;
sp->pWnd=this;
sp->strAddress=m_arrDatAddress.GetAt(j).address;
sp->strInputID=m_arrDatAddress.GetAt(j).inputID;
sp->strPhone=m_arrSendPhone.GetAt(i);
if(m_arrDatAddress.GetAt(j).type==0)
::AfxBeginThread((AFX_THREADPROC)SendPostThread,(void *)sp);
else
::AfxBeginThread((AFX_THREADPROC)SendGetThread,(void *)sp);
}
}
CDialog::OnTimer(nIDEvent);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -