1、论文引言
短信MODEM(短信猫)目前在城市安防工程、信息化系统管理、办公自动化OA等方面都有广泛的使用,例如,笔者曾参与过的城市安防工程建设项目中,就使用过短信猫发送治安报警信息到保卫人员移动电话上,以便及时处理。但是短信猫硬件的实现具有一定局限性,一是经济成本较高,除硬件采购外,发送信息需要移动运营商网络的支持,产生一定的通信费用。二是部署不灵活,不具备扩展性。另一方面,伴随着互联网的迅猛发展,各种网络应用和平台层出不穷,最大的特点就是免费,灵活。那么是否可以利用互联网免费平台实现短信猫功能呢?
经过调研,论文提供了一种短信猫的软件实现方式,即利用中国移动公司推出的“飞信”平台,覆盖三种不同形态(完全实时、准实时和非实时)的客户通信需求,实现互联网和移动网间的无缝通信服务。
2、整体思路及原理
本程序实现的思路是利用现代软件开发过程中流行的SOA思想,实现一个飞信客户端程序和用户应用间的中间件,利用第三方程序实时监控和获取飞信客户端程序的状态,同时监控用户应用,与飞信客户端程序,最终是用户移动终端实现交互。
3、核心模块实现
从程序运行流程可以看出目前该程序业务核心集中在监视飞信客户端窗口状态上。原理是扫描windows操作系统的窗口句柄及其属性,以Fetion利用MicrosoftVisualStudio提供的SPY++工具对飞信客户端进行分析:
业务代码实现不在此赘述,现给出利用MicrosoftMFC提供的API函数实现核心模块的C++语言实现代码,仅供大家参考。
飞信窗口枚举扫描模块的实现是编写一个枚举当前指定窗口所有子窗口的回调函数EnumChildProc,然后被主主、从线程调用来获取子窗口,即飞信客户端发送或接收窗口句柄。
//回调函数,传进来各参数为需要的各子窗口的窗口句柄
BOOLCALLBACKEnumChildProc(
HWNDhwnd,//handletochildwindow
LPARAMlParam//application-definedvalue
)
{
AutoFetion*pThis=(AutoFetion*)lParam;
longSytleValue=GetWindowLong(hwnd,GWL_STYLE);
if(SytleValue==0x56001004)//具体数值用SPY++获取
{
//获取接收人编辑框的句柄
pThis->SendObjectID=hwnd;
returnTRUE;
}
if(SytleValue==0x56001104)//具体数值用SPY++获取
{
//获取短信发送框的句柄
pThis->SendEditCtrID=hwnd;
returnTRUE;
}
if(SytleValue==0x56001804)//具体数值用SPY++获取
{
//利用子窗口style属性获取接收框句柄
pThis->RecvEditCtrID=hwnd;
returnTRUE;
}
returnTRUE;
}
获取的的飞信消息接收窗口和发送窗口句柄分别保存在变量RecvEditCtrID和SendEditCtrID中。
消息发送模块,主要利用windowsapi函数SendMessage给指定窗口发送消息实现,同时模拟鼠标消息,触发飞信客户端发送控件给指定手机发送短信。
boolAutoFetion::SendTo(CString&text)
{
::SetWindowPos(pObjectWnd->GetSafeHwnd(),HWND_TOPMOST,0,0,0,0,SWP_NOSIZE);
::SendMessage((HWND)SendEditCtrID,WM_PASTE,NULL,NULL);
//将键盘输入焦点聚焦在短信文本输入框,以便回车发出短信消息
SetFocus((HWND)SendEditCtrID);
::SendMessage((HWND)SendEditCtrID,WM_KEYDOWN,VK_RETURN,0);
returntrue;
}
消息获取分发模块,同样利用SendMessage函数向接收窗口发送消息获取接收窗口收到的短消息。
::SendMessage(RecvEditCtrID,WM_GETTEXT,100,(LPARAM)TextString);
CStringTempString=TextString;
Switch(TextString)
{
case用户指令1:
执行;
case用户指令2:
执行;
}
4、论文结束语
目前除中国移动通信公司官方开发的终端软件外,利用fetion服务的特点开发的其他应用尚不广泛。目前主要是一些网站利用中国移动官方的服务端口开发的web短信接口。但是这些应用都存在两个局限性:一是其未经中国移动官方许可模拟飞信终端登录官方服务器,牵扯知识产权保户的问题。二是以上非官方应用方式都是通过抓包分析官方飞信的协议,模拟官方终端登录服务器实现短信的发送,一旦官方协议发生改变,则服务即不可使用。而短信猫的软件实现,则提供了一种经济灵活的通信方式,通过对其接口的扩展,甚至可以实现图片和文件的传输,在城市安防、信息化系统管理等诸多方面都有广泛的应用空间。