?? smsrobot更多介紹,不錯解釋詳細.htm
字號:
m_filepath = m_currentpath + \"date\\\\ph2.txt\";
m_hand.Getphone(&m_Slist,m_filepath);
//以上代碼通過讀文件里的數據初始化電話列表
m_filepath = m_currentpath + \"date\\\\sta.tem\";
m_mes = m_hand.GetStatus(&m_currentsend,
&m_tolsend,
&m_WebOrLocal,
0,
m_filepath);
m_url = m_hand.GetStatus(&m_currentsend,
&m_tolsend,
&m_WebOrLocal,
1,
m_filepath);
//以上代碼通過讀文件里的數據恢復上次發送的狀態
HWND hwnd = GetSafeHwnd();
AfxBeginThread(ShowWeb,
hwnd,
THREAD_PRIORITY_LOWEST);
//以上代碼為CsmsrobatView獨有,它激活一個輔助線程來顯示廣告頁面
UpdateData(FALSE);
int i = m_Slist.GetItemCount();
CString tem;
tem.Format(\"%d\",i);
m_numofsend.SetWindowText(tem);
if(m_currentsend>=i)
m_currentsend = 0;
tem.Format(\"%d\",m_currentsend);
m_stat2.SetWindowText(tem);
//以上代碼設置上次發送的短信息數
網上發送短消息的函數LocalSend()
由于代碼過長,請看源程序。
本地發送短消息的函數WebSend()
由于代碼過長,請看源程序。
啟動發送過程的函數OnSend()
void CSmsRobatView::OnSend()
{
UpdateData(TRUE);
CString m_msgtosend;
if(m_mes.GetLength()>94)
{
m_msgtosend=m_mes.Left(94);
MessageBox(\"要發送的信息太長!\\r\\n程序將只發送前94個字符!\",
\"MjxxSms提示\");
}
else
m_msgtosend = m_mes;
if(m_Slist.GetItemCount()==0)
{
MessageBox(\"手機列表不能為空!\\r\\n請設置手機列表!\",
\"MjxxSms提示\",16);
}
else
{
if(m_msgtosend.IsEmpty()||(m_msgtosend.GetLength()==0))
{
MessageBox(\"信息內容不能為空!\\r\\n請輸入要發送的內容\",
\"MjxxSms提示\",16);
return;
}
if(m_WebOrLocal == WEB)
{
ifstopsend = FALSE;
HWND hwnd = GetSafeHwnd();
AfxBeginThread(WebSend,
hwnd,
THREAD_PRIORITY_LOWEST);
}
if(m_WebOrLocal == LOCAL)
{
m_ifstop = FALSE;
LocalSend(m_mes);
}
}
}
彈出IE以顯示廣告商主頁的函數(CsmsrobatView所獨有)
OnWww1(),OnWww2(),OnWww3(),OnWww4(),OnWww5(),OnWww6()。下面是其中之一的源代碼:
void CSmsRobatView::OnWww1()
{
ShellExecute(this->m_hWnd,\"open\",\"http://www.mjxx.net\",NULL,NULL,SW_SHOWMAXIMIZED);
}
彈出注冊對話框的函數(CsmsrobatView所獨有) OnWww7()。
程序結束時調用的函數
當程序結束時,程序會調用OnDestroy()函數。在這個函數中有些信息需要寫到磁盤文件保存下來,
這些信息有電話號碼列表,待發送的電話號碼列表,程序的狀態等。
在視圖用到的函數總結如下
OnLoadnum()——從磁盤文件中導入電話號碼列表。
OnSavephone()——把電話列表里的內容保存到磁盤文件。
OnClearphone()——清除電話號碼列表和待發送的電話號碼列表。
OnSend()——開始發送消息(本地或WEB方式,具體情況由變量m_WebOrLocal決定,
當m_WebOrLocal=0時為本地發送,當m_WebOrLocal=1時位WEB發送)。同時它還可
以判斷出所發送的消息是否過長。上文有其源代碼。
OnStop()——停止發送短消息(無論是本地方式還是WEB方式)。
OnClearmes()——清除消息框中的文本。
OnClearlog()——清除日志。
OnOritosenda()——把電話號碼列表里的內容全部移到待發電話號碼列表里。
OnSendtoorigina()——把待發電話號碼列表里的內容全部移到電話號碼列表里。
OnOrigintosends()——把電話號碼列表里選中的內容移到待發電話號碼列表里,如果沒有選中任何內容,則默認為第一條。
OnSendtorigins()——把待發電話號碼列表里選中的內容移到電話號碼列表里,如果沒有選中任何內容,則默 認為第一條。
OnDblclkPorigin()——彈出編輯電話號碼列表的對話框。
(4) 所用文件和自定義的處理文件的類HandleFile
本程序會用到以下文件
存儲在程序當前目錄下data文件夾中的文件:
sms.reg1由里面存儲的信息可知程序是否為第一次執行,是否注冊過。
sms.tim記錄程序第一次執行的時間(年,月,日)。
ph1.txt記錄程序關閉時的電話號碼列表。
ph2.txt記錄程序關閉似的待發電話號碼列表。
sta.tem記錄程序關閉時的狀態。
web.conf記錄程序WEB發送的參數,包含特定網站的url,以及用戶在相應網粘上的用戶密碼。
local.conf記錄程序本地發送的參數。
存儲在程序當前目錄下log文件夾中的文件:
log.txt保存用戶的日志。
存儲在程序當前目錄下Pho文件夾中的文件:
用戶的電話號碼列表文件。
HandleFile里的函數:
GetFilePath()——以字符串返回選中文件對話框里的路徑。
GetCtFilePath()——以字符串返回程序的當前路徑。
Getphone()——從指定的路徑讀取電話號碼列表。
WritePhone()——把電話號碼列表寫到指定的文件中。
WriteLog ()——把日志寫到特定的文件中。
WritConfig()——把本地發送的參數寫到local.conf文件中。
SetPara()——從local.conf中導入本地發送的參數,以便對視圖進行初始化。
WriteStatus()——程序關閉時把程序的狀態寫入到文件sta.tem中。
GetStatus()——從sta.tem中導入程序上次關閉時的狀態,以便對視圖進行初始化。
WriteReg()——對sms.reg1進行寫操作。
GetReg()——對文件sms.reg1進行讀操作。
WriteTime()——對文件sms.tim進行寫操作。
GetTime()——對文件sms.tim進行讀操作。
(5) SerNumDlg類
此類用來驗證注冊是否正確,它是一個對話框派類。SerNumDlg有一個變量m_passward,
它是一個字符串變量,其值等于用戶的輸入,為了檢驗用戶的輸入是否為一個有效的序列號,
SerNumDlg用到了以下幾個函數。
IfHasReC(CString cs,char c)——判斷cs中的字符c是否重復。
Getidex(CString cs,char c)——返回cs中字符c的位置。
change(CString cs)——把cs和特定的一組數進行異或,并返回異或后的字符串。其源代碼如下:
CString SerNumDlg::change(CString cs)
{
char tem[20];
int tem1[20] = {1,1,0,2,0,1,2,0,0,1,0,1,0,2,1,2,1,0,1,1};
int i;
for(i=0;i<20;i++)
{
tem[i] = cs.GetAt(i)^tem1[i];
}
CString tem2 = CString(tem);
tem2 = tem2.Left(20);
return tem2;
}
test(CString cs)——判斷cs是否為符合設定的序列號。其代碼如下:
BOOL SerNumDlg::test(CString cs)
{
if(cs.GetLength()!=20) return FALSE;
if(cs.Find(\'j\')==-1||
cs.Find(\'r\')==-1||
cs.Find(\'o\')==-1||
cs.Find(\'t\')==-1||
cs.Find(\'c\')==-1||
cs.Find(\'i\')==-1||
cs.Find(\'a\')==-1||
cs.Find(\'n\')==-1||
cs.Find(\'g\')==-1||
cs.Find(\'y\')==-1||
cs.Find(\'u\')==-1||
cs.Find(\'v\')==-1||
cs.Find(\'f\')==-1||
cs.Find(\'d\')==-1||
cs.Find(\'h\')==-1) return FALSE;
if(Getidex(cs,\'j\')>Getidex(cs,\'r\')||
Getidex(cs,\'r\')>Getidex(cs,\'o\')||
Getidex(cs,\'o\')>Getidex(cs,\'t\')||
Getidex(cs,\'t\')>Getidex(cs,\'c\')||
Getidex(cs,\'c\')>Getidex(cs,\'i\')||
Getidex(cs,\'i\')>Getidex(cs,\'a\')||
Getidex(cs,\'a\')>Getidex(cs,\'n\')||
Getidex(cs,\'n\')>Getidex(cs,\'g\')||
Getidex(cs,\'g\')>Getidex(cs,\'y\')||
Getidex(cs,\'y\')>Getidex(cs,\'u\')||
Getidex(cs,\'u\')>Getidex(cs,\'v\')||
Getidex(cs,\'v\')>Getidex(cs,\'f\')||
Getidex(cs,\'f\')>Getidex(cs,\'d\')||
Getidex(cs,\'d\')>Getidex(cs,\'h\')) return FALSE;
if(IfHasReC(cs,\'j\')||
IfHasReC(cs,\'r\')||
IfHasReC(cs,\'o\')||
IfHasReC(cs,\'t\')||
IfHasReC(cs,\'c\')||
IfHasReC(cs,\'i\')||
IfHasReC(cs,\'a\')||
IfHasReC(cs,\'n\')||
IfHasReC(cs,\'g\')||
IfHasReC(cs,\'y\')||
IfHasReC(cs,\'u\')||
IfHasReC(cs,\'v\')||
IfHasReC(cs,\'f\')||
IfHasReC(cs,\'d\')||
IfHasReC(cs,\'h\')) return FALSE;
return TRUE;
}
</TEXTAREA></TD></TR>
<TR align=middle>
<TD vAlign=top align=left colSpan=2 height=1></TD></TR></TBODY></TABLE><BR>
<TABLE class=copy cellSpacing=0 cellPadding=0 width=778 align=center
bgColor=#e5e4e2 border=0>
<SCRIPT language=JavaScript src="SMSRobot更多介紹,不錯解釋詳細.files/foot.js"></SCRIPT>
<TBODY></TBODY></TABLE></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -