📄 smsrobot更多介绍,不错解释详细.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0062)http://www.sendsms.cn/product/smssoft/jindi-smsrobot-more4.htm -->
<HTML><HEAD><TITLE>SMSRobot更多介绍</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="SMSRobot更多介绍,不错解释详细.files/style.css" type=text/css rel=stylesheet>
<STYLE type=text/css>BODY {
MARGIN: 0px
}
.style6 {
COLOR: #fead54
}
.style8 {
FONT-WEIGHT: bold; COLOR: #fead54
}
</STYLE>
<SCRIPT language=JavaScript
src="SMSRobot更多介绍,不错解释详细.files/mm_menu1.js"></SCRIPT>
<SCRIPT language=JavaScript src="SMSRobot更多介绍,不错解释详细.files/mm_menu.js"></SCRIPT>
<SCRIPT language=JavaScript
src="SMSRobot更多介绍,不错解释详细.files/mm_menu2.js"></SCRIPT>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY>
<SCRIPT language=JavaScript1.2>mmLoadMenus();</SCRIPT>
<TABLE cellSpacing=0 cellPadding=0 width=778 align=center border=0>
<SCRIPT language=JavaScript src="SMSRobot更多介绍,不错解释详细.files/head.js"></SCRIPT>
<TBODY></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=778 align=center border=0><!--DWLayoutTable-->
<TBODY>
<TR>
<TD width=778 height=10> </TD></TR></TBODY></TABLE>
<TABLE class=con1 cellSpacing=0 cellPadding=0 width=778 align=center border=0><!--DWLayoutTable-->
<TBODY>
<TR>
<TD style="PADDING-LEFT: 0px" vAlign=top align=middle width=207><A
href="http://www.sendsms.cn/product/smssoft/jindi-smsrobot.htm"><IMG
height=99 src="SMSRobot更多介绍,不错解释详细.files/img-smsrobot.gif" width=93
border=0></A><BR><STRONG><A
href="http://www.sendsms.cn/product/smssoft/jindi-smsrobot.htm">Jindi-SMSRobot
v2.0</A></STRONG> <BR></TD>
<TD style="PADDING-LEFT: 0px" vAlign=top width=571>
<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
<TBODY>
<TR>
<TD><STRONG>关于金笛短消息群发机器人的更多介绍...</STRONG></TD></TR></TBODY></TABLE><SPAN
class=style8><SPAN class=style6><BR><IMG height=16
src="SMSRobot更多介绍,不错解释详细.files/icon-indent.gif"
width=12></SPAN></SPAN>金笛短消息控件SMSActiveX 方法说明<BR><SPAN class=style8><SPAN
class=style6><IMG height=16
src="SMSRobot更多介绍,不错解释详细.files/icon-indent.gif" width=12></SPAN></SPAN><A
href="http://www.sendsms.cn/product/smssoft/jindi-smsrobot-more2.htm">金笛短消息控件SMSActiveX使用说明</A><BR><SPAN
class=style8><SPAN class=style6><IMG height=16
src="SMSRobot更多介绍,不错解释详细.files/icon-indent.gif" width=12></SPAN></SPAN><A
href="http://www.sendsms.cn/product/smssoft/jindi-smsrobot-more3.htm">短信群发机器人
SMSRobot 系统盈利分析</A><BR><SPAN class=style8><SPAN class=style6><IMG
height=16 src="SMSRobot更多介绍,不错解释详细.files/icon-indent.gif"
width=12></SPAN></SPAN>SMSRobot程序二次开发接口</TD></TR>
<TR bgColor=#fff7dd>
<TD vAlign=top colSpan=2>
<P><SPAN class=style8>SMSRobot程序二次开发接口</SPAN><BR></P></TD></TR>
<TR align=middle>
<TD vAlign=top colSpan=2>
<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
<TBODY>
<TR>
<TD align=left>一 程序结构: <BR>1 开发及运行环境
<BR>本程序由VC开发,用到了MFC类库,它只能运行于WINDOWS操作系统下。 <BR>2程序工作原理及所用到的类 <BR>(1)
CSmsrobatApp类: MFC产生的类,它没有太多的函数,而其程序只用到了它的InitInstance()函数,
<BR>此函数用于程序的初始化。初始化要完成下图所示内容。(其中会对文件进行读写操作,这些操作会涉及到
<BR>自定义的HandleFile类,关于这个类以及要用到的文件我在文档的后面有更详细的说明。) </TD></TR>
<TR>
<TD align=middle><IMG height=300
src="SMSRobot更多介绍,不错解释详细.files/smsrobot-second.jpg"
width=400><BR></TD></TR>
<TR>
<TD align=middle bgColor=#fff7dd>SMSRobot 初始化流程
</TD></TR></TBODY></TABLE></TD></TR>
<TR align=left>
<TD vAlign=top colSpan=2><SPAN
class=style8>图为CsmsrobatApp::InitInstance()的逻辑关系,
<BR>下面是函数InitInstance()的源代码(手工加入部分) </SPAN></TD></TR>
<TR align=middle>
<TD vAlign=top colSpan=2><TEXTAREA class=con1 style="WIDTH: 700px; HEIGHT: 400px; BACKGROUND-COLOR: #fff7dd" name=textfield> int ifreg = 0;
int iffirst;
HandleFile m_hand;
CString path1,path2;
path1 = m_hand.GetCtFilePath(\"datasms.reg1\");
path2 = m_hand.GetCtFilePath(\"datasms.tim\");
ifreg = m_hand.GetReg(&iffirst,path1);
if(iffirst == 0) //判断程序是否为第一次运行
{
CTime tm;
tm = CTime::GetCurrentTime();
m_hand.WriteTime(tm.Format(\"%Y\"),
tm.Format(\"%m\"),
tm.Format(\"%d\"),
path2);
m_hand.WriteReg(0,1,path1);//如果是第一次运行,把当前时间写入sms.tim文件,
//在sms.reg1文件中去除第一次运行标记
}
else //如果不是第一次运行
{
int year,month,day;
m_hand.GetTime(&year,&month,&day,path2);
CTime tm(year,month,day,0,0,0,-1);
CTime tmN = CTime::GetCurrentTime();
CTimeSpan tms = tmN - tm;
int inte;
inte = tms.GetDays();
CString tem;
tem.Format(\"%d\",inte);
if(ifreg == 0) //判断程序是否注册
{
if(inte>=90) //如果程序没有注册,判断它是否过期,如过期则退出程序
{
AfxMessageBox(\"程序已过期\");
return FALSE;
}
}
}
if(ifreg == 0) //如果程序没有注册,也没有过期则用CsmsrobatView类作为活动视图
{
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CSmsRobatDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CSmsRobatView));
AddDocTemplate(pDocTemplate);
}
else if(ifreg == 1) //如果程序注册,则用review类作为活动视图
{
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CSmsRobatDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(review));
AddDocTemplate(pDocTemplate);
}
else
{
AfxMessageBox(\"注册文件被破坏!!\\r\\n请重装软件!!\");
return FALSE;
}
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
m_pMainWnd->SetWindowText(\"SMSRobot短信群发机器人\");//设置程序的标题
(2) CMainFrame类
这个类是程序的框架类,也由MFC产生。其中有一个变量m_ifreg,和三个函数 OnCreate(),OnSetPara(),
OnGetMinMaxInfo()很重要。 在OnCreate()中读文件sms.reg1以设置m_ifreg,在OnSetPara()和
OnGetMinMaxInfo()中需要用m_ifreg来确定review, CsmsrobatView谁是活动视图。
OnSetPara()用来弹出设置本地发送或WEB发送参数的对话框,至于是本地还是WEB方式由活动视图的变量
m_WebOrLocal决定。OnGetMinMaxInfo()函数决定程序框架窗口的大小。CMainFrame中还会用到一个函数
OnClose(),它察看程序终止前是否还在进行本地发送操作,如果是,程序会弹出一个对话框提醒用户先结束发送。
下面是CMainFrame类中一些重要函数的源代码
OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) //定制程序窗口的大小
{
if(m_ifreg == 0)//程序没有注册时的窗口大小
{
lpMMI->ptMinTrackSize.x = 548;
lpMMI->ptMinTrackSize.y = 472;
lpMMI->ptMaxTrackSize.x = 548;
lpMMI->ptMaxTrackSize.y = 472;
}
if(m_ifreg == 1)//注册过程序的窗口大小
{
lpMMI->ptMinTrackSize.x = 548;
lpMMI->ptMinTrackSize.y = 365;
lpMMI->ptMaxTrackSize.x = 548;
lpMMI->ptMaxTrackSize.y = 365;
}
}
(3) 活动视图类(review或CsmsrobatView类)
这两个类谁是程序的视图由程序是否注册来决定,如果注册了,程序用review作为其视图,
反之用CsmsrobatView作为其视图。视图是用户和程序交互的界面。
视图中的数据和控件在OnInitialUpdate()函数中被初始化。程序发送短信息的功能也是在
视图中完成的。本地发送用函数LocalSend(),WEB发送用全局函数WebSend1(review)或
WebSend(CsmsrobatView)。这里有一点需要说明,LocalSend()用到了一个Active控件,
这个控件发送短信息时会把控制交给程序,所以,我把Localsend()作为视图的一个操作,
它被激活时在程序的主线程内运行。而用WebSend或WebSend1通过网站发送短信息时,
不返回控制给程序,所以为了能够中途停止网上发送,把WebSend或WebSend1做成了全局函数,
他们被激活时会启动一个辅助线程。
下面是视图里主要函数的源代码及其说明
视图的初始化函数OnInitialUpdate()
OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
//下面是程序中手工加入的代码
HandleFile m_hand;
m_currentpath = m_hand.GetCtFilePath(\"\"); //得到程序运行的当前路径
CString m_filepath;
m_filepath = m_currentpath + \"date\\\\local.conf\";
m_comport = m_hand.SetPara(m_filepath);
m_connectmode = m_hand.ChangeCtModeToFit(m_hand.ConnectionMode);
m_mode1 = m_hand.ChangeModelToFit(m_hand.Mode1);
//以上代码通过读文件里的数据初始化本地发送的参数
m_filepath = m_currentpath + \"date\\\\ph1.txt\";
m_hand.Getphone(&m_Olist,m_filepath);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -