重要资料 远程遥控取回

模仿功能:邮件遥控程序

模仿对象:手机看门狗

模仿进度:第三期

开发平台:Windows Mobile平台

上期我们通过短信远程删除手机内的信息。但是重要资料,岂能一删了之?下面我们要实现的是通过邮件取回重要资料的功能。

邮件遥控程序设计思路

手机内敏感的信息远程删除虽然一了百了,但不适合所有的用户。如果手机内有一些重要信息,例如一些重要的联系人资料、一些重要的记事信息等,是不能直接删除了事的。对这些有特殊要求的用户而言,取回信息才是最重要的。

要开发邮件遥控程序,先要监视手机接收的短消息,对收到的短信息进行判断,判断是否为预先约定的指令短信,然后激活邮箱,以邮件附件的形式将指定内容发送到预设的邮箱。指定的内容可以是所有联系人信息,也可以是照片、记事本等,具体的内容可以根据自己的情况自行设定。操作完成后,回复一条已经成功执行的短信给下达指令的手机(图1)。

clip_image002[4]

如何将内容添加到邮件

要通过邮件远程取回信息,必须先将手机中的重要信息添加到邮件中。如何提取这些信息呢?这就要用到.Net CF中的PocketOutlook方式。在命名空间Microsoft.WindowsMobile.PocketOutlook中,提供了类EmailMessage,即电子邮件类。

EmailMessage里面几个主要的属性和方法:EmailMessage.To:接受者列表、EmailMessage .Subject:邮件主题、EmailMessage. BodyText:邮件内容、EmailMessage. Attachments:邮件附件列表。

通过这些类设定邮件主题、内容,添加接受者、添加邮件附件,然后通过EmailMessage.Send或者OutlookSession里面提供的Send 方法发送即可。这种技术,在邮件群发、邮件通知等功能时都会用到。

邮件遥控程序开发步骤

第一步:创建项目

启动Visual Studio 2008,选择“文件→新建项目”。在弹出的“新建项目”的“项目类型”中选择“Visual C#→智能设备”,“模板”选“智能设备项目”,“名称”设为“Watchdog3”。在弹出的“添加新智能设备项目”对话框中,“目标平台”选择“Windows Mobile 6 Professional SDK”,“.Net Compact Framework 版本”选择“.Net Compact Framework Version 3.5”,“模板”选“设备应用程序”完成项目创建。

第二步:添加引用

要使用MessageInterceptor和邮件发送的功能,需要先添加程序集Microsoft.WindowsMobile.dll和Microsoft.WindowsMobile.PocketOutlook.dll的引用,然后引用Microsoft.WindowsMobile.PocketOutlook和Microsoft.WindowsMobile.PocketOutlook.MessageInterception命名空间。

在“解决方案资源管理器”内,点击 “Watchdog3→添加引用→.Net”,选中“Microsoft.WindowsMobile”和“Microsoft.WindowsMobile.PocketOutlook”,点击“确定”即可。打开Form1.cs,添加如下代码:

using Microsoft.WindowsMobile.PocketOutlook;
using Microsoft.WindowsMobile.PocketOutlook.MessageInterception;

第三步:监视短信

创建短信拦截器,并添加拦截条件,添加短信监控事件,便可拦截到所需短信了。在这里可以添加多种条件的短信拦截器。在Form1.cs中添加代码,关键码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

MessageCondition messageCondition = new MessageCondition();//创建一个拦截条件对象
messageCondition.Property = MessageProperty.Body;//针对消息体匹配
messageCondition.ComparisonType = MessagePropertyComparisonType.Equal;//匹配类型为全部相等
messageCondition.ComparisonValue = "{Watchdog:GetContacts}";//匹配的内容(取回联系人)
messageCondition.CaseSensitive = true;//匹配时区分大小写

MessageInterceptor messageInterceptor = new MessageInterceptor(//创建一个短消息拦截器对象
    InterceptionAction.NotifyAndDelete,//拦截动作:通知并删除
    true);

第四步:准备发送的文件

在这一步,将联系人信息保存到一个文件内,将“我的文档”等需要传输的内容打包,方便以邮件附件的形式发送。在Form1.cs内添加生成附件文件的代码,关键码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

     string af=@"\My Documents\a.txt";//附件文件路径
        // 将联系人信息生成一个附件文件
        void GetAttachments()
            using (OutlookSession s = new OutlookSession())//创建OutlookSession实例
            {
                using (StreamWriter sw = File.AppendText(af))//打开文件
                {
                    foreach (Contact c in s.Contacts.Items)//轮询通讯簿
                    {
                        sw.WriteLine("%s:%s", c.FileAs, c.MobileTelephoneNumber);//将姓名,手机号存入附件文件。这里仅保存姓名,手机号。更多内容可自行添加

步:发送邮件

拦截到指令短信后,触发对应的MessageReceived事件,我们在该事件中执行发送邮件的操作。在拦截事件处理方法messageInterceptor_MessageReceived内添加代码,关键码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

            EmailMessage email = new EmailMessage();//创建Email实例
            email.Subject = "{Watchdog:GetContacts}";//设定邮件主题
            Recipient r=new Recipient("tanjians@gmail.com");//创建一个接受者实例
            email.To.Add(r);//添加该接受者
            GetAttachments();//生成附件文件
            Attachment a = new Attachment(af);//创建一个附件实例
            email.Attachments.Add(a);//添加改附件
            using (OutlookSession s = new OutlookSession())
                s.EmailAccounts[0].Send(email);//用第一个邮件账户发送该邮件

第五步:测试程序

在Visual Studio 2008中点击菜单“调试→启动调试”(或者直接按F5),在弹出的部署对话框中选择“Windows Mobile 6 Professional Device”(如果不是真机与电脑连接,那么选择“Windows Mobile 6 Professional Emulator”,则会启动设备模拟器),点击“部署”,部署完成之后便会在终端上自动启动程序。

如果使用的是Windows Mobile系统的真机,那么可以轻松通过实际发短信的方式测试程序;如果使用设备模拟器的话,我们可以参照上期介绍的方法,使用SDK中提供的“蜂窝模拟器”来发送短信指令进行测试(图2)。

clip_image004

读者反馈

开发QQ群:公司研制的软件需要增加短信收发功能,我不知道应该怎么做,要什么设备,要什么接口、控件等。最好是Delphi开发,因为我们公司用的是这个语言,请《电脑报》专家给我一些建议!

:语言倒不是什么大问题,关键是实际开发部分。我有几个建议:第一,可以使用网上提供的一些免费的短信收发接口。第二,可以使用手机连接PC,利用AT指令开发PC桌面程序控制手机进行短信收发。

第三,购买SMS Modem(俗称短信猫),使用附带程序或自行利用AT指令开发程序实现短信收发。第四,与SP公司合作,通过SP公司接入移动运营商的短信网关,实现短信收发。

发QQ:我想做一个手机的图像管理器,可以实现一些基本的功能 但是现在还不知道怎么着手

小编:可以使用Visual Studio 2008 + Windows Mobile 6 SDK开发一个“设备应用程序”,利用.Net CF 里面的File、Image、Bitmap等类可以实现图像管理相关的功能。File类提供的功能可以访问与操作文件的一些属性。Image、Bitmap类则提供了图片显示、缩放等等的功能。若要进行更复杂的图片编辑操作,有一个开源的项目可以参考:Paint.Net,在项目源码里面你可以找到很多常用的图像处理算法。

发QQ:我编写好程序后,发现出现汉字乱码,这是怎么回事?

小编:一般是中文字符编码的问题。使用Visual Studio等常用的商业IDE开发的程序一般不会出现该类问题,但是利用一些较老旧的或者不常用的或者非商业支持的语言和工具进行开发,则需要注意自行配制好编码支持。

发QQ:看了上期的问题,有一个疑问,利用指令短信可以远程启动手机的摄像头不?

小编:通过指令短信,很多操作都可以实现,要启动手机的摄像头,可以使用.Net CF内提供的CameraCaptureDialog类。具体使用方法参照MSDN:http://msdn.microsoft.com/en-us/library/microsoft.windowsmobile.forms.cameracapturedialog.aspx。

读者问题:手机上有数据库吗?如果有,常用的有哪些呢?

高手 呼吸:手机上也有与PC上概念类似的数据库系统。常见的有MS SQL CE、SQL Lite、Firebird等。.Net CF 中提供了ADO.Net的精简版本,新版的.Net CF还提供了Linq技术的精简版本。我们可以使用这些技术结合数据库系统提供的相应.Net访问驱动,进行Windows Mobile的数据库开发。

读者问题:我使用的是PPC手机,日历、任务功能对我很重要。直接在手机上添加日历或任务很不方便,需要双手操作,还有很多选项。能不能在通话记录或联系人的菜单中添加一个命令,可以一键设定与所选联系人关联的日历或任务?

(载《电脑报》2009年29期)

原文地址:https://www.cnblogs.com/tanjian/p/1634228.html