📄 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 + -