WM有约II(一):你在干嘛?

Written by Allen Lee

"你在干嘛?"

我想大多数读者都收到过这样的短信息吧?有时候我在想,能否为手机开发一个应用程序,自动回复当前的状态?不要让想法只停留在脑子里,因为这样是无法产生任何现实意义的。事不宜迟,我们创建一个智能设备项目试试看吧(创建项目的详细步骤可以参见《WM有约(一):你好,CF》)。项目创建好后,就轮到用户界面了,此刻我脑子里的画面是这样的:

图 1

这个用户界面包括上下两个部分,上面的ComboBox用于设置当前的状态,一旦应用程序"发现"查询状态的短信息就会自动回复当前的状态;下面的TextBox用于输入对方的手机号码,单击Ping按钮将会向该手机号码发送查询状态的短信息。

如何发送短信息?

我们知道,这个应用程序是使用短信息来通信的,所以第一个问题就是如何发送短信息。Windows Mobile 6 Professional SDK提供的类库可以协助我们完成这项工作,但在使用之前,我们必须添加相关的引用:

图 2

此外,你还需要引用Microsoft.WindowsMobile.PocketOutlook这个命名空间。现在,你可以使用SmsMessage这个类来发送短信息了:

代码 1

接着就是处理Ping按钮的Click事件了:

代码 2

我正在做……

在实现自动回复之前,我们先要给出可选的状态,也就是填充ComboBox。你可能已经想到很多办法来完成这项工作,这里我将会选择把一个字符串数组绑定到ComboBox的DataSource属性:

代码 3

接着,我们需要截获包含特定内容的短信息,Windows Mobile 6 Professional SDK提供了MessageInterceptor类来协助我们完成这项工作:

代码 4

当然,在使用这个类之前,你得先引用Microsoft.WindowsMobile.PocketOutlook.MessageInterception命名空间。截获的短信息将会交给OnMessageReceived方法处理:

代码 5

模拟运行

由于这个应用程序的运行需要用到通信网络,于是我们需要对模拟器设置一下。首先,打开Windows Mobile 6 Professional SDK自带的Cellular Emulator:

图 3

记下左下角的端口号。接着,打开模拟器的配置对话框,把这个端口号填到Peripherals选项卡的Serial port 0那里:

图 4

单击OK关闭对话框。然后,软重启模拟器:

图 5

重启完毕后你会看到模拟器已经连接到通信网络了:

图 6

好了,现在可以运行这个应用程序了:

图 7

使用Cellular Emulator向模拟器发送查询状态的短信息,不一会就收到自动回复了:

图 8

当你在这个应用程序的主窗体下面的TextBox里输入一个手机号码,并单击Ping按钮时,Cellular Emulator就会收到这个应用程序发送的查询状态的短信息:

图 9

你还想要什么?

且慢!搞了这么久,为什么收到"你在干嘛?"时还要手动回复?噢,看来我是得意忘形了,不好意思哟~~~

下一集,我们将会探讨如何让这个应用程序支持自定义的查询状态的短信息,例如"你在干嘛?",以及如何让这个应用程序支持可配置的状态信息,另外,我们还会尝试改善用户体验,让用户可以从电话簿里选择手机号码而不是手动输入一串数字。

转载于:https://www.cnblogs.com/allenlooplee/archive/2009/01/14/1375941.html

WM有约II(一):你在干嘛?相关推荐

  1. WM有约II(二):持续改进

    WM有约II(二):持续改进 Written by Allen Lee 自定义"你在干嘛?" 在上一集结束的时候,我们发现一个极其严重的问题--这个应用程序会忽略我们最初希望截获的 ...

  2. WM有约(三):下一次是什么时候?

    WM有约(三):下一次是什么时候? Written by Allen Lee 不要留恋过去 怎样才能约束用户,不让其选择过去的日期呢?有一个很傻的办法,就是每次启动应用程序的时候,自动把MonthCa ...

  3. WM有约(五):部署应用程序

    WM有约(五):部署应用程序 Written by Allen Lee 创建安装包 创建一个新的项目,用来部署Windows Mobile应用程序的项目模板是Other Project Types\S ...

  4. 艾伟:WM有约(一):你好,CF

    Written by Allen Lee 来,和CF打个招呼! 在这个系列里,我将会使用Visual Studio 2008来创建Windows Mobile 6 Professional应用程序,如 ...

  5. WM中的OutLook开发和操作

    昨天闲来无视,学习了一下WM的基本开发.看WM有约的那套教程心里痒痒,于是下载了SDK,看看DEMO,在Sample中的示例进行加工.小有一点心得.其实总的来说难度也不是很大,以前没有做过FORM的程 ...

  6. 【Comet OJ - Contest #5 - C】迫真小游戏(优先队列,贪心构造,树,字典序)

    题干: H君喜欢在阳台晒太阳,闲暇之余他会玩一些塔防小游戏. H君玩的小游戏可以抽象成一棵 nn 个节点的有根树,树以 11 为根,每个点的深度定义为其到根的简单路径上的点数(根的深度为 11). H ...

  7. Comet OJ - Contest #5 D 迫真小游戏 (堆+set)

    迫真小游戏 已经提交 已经通过 时间限制:2000ms 内存限制:256MB 73.98% 提交人数:196 通过人数:145 题目描述 H君喜欢在阳台晒太阳,闲暇之余他会玩一些塔防小游戏. H君玩的 ...

  8. 20190325 Django自定义过滤器和自定义模板标签

    代码布局(死去活来) 自定义要先解决几个问题: 1). 在哪里定义,要将代码写在哪里? app目录下的名为templatetags的文件夹,必须叫这个名字.这个文件夹必须是一个python的包(pyt ...

  9. 飞思卡尔比赛K60驱动OLED12864显示摄像头采集的赛道图像,完整代码分享

    一.首先采集摄像头图像,由于硬件不同采集方式也不一样,我就不多做说明 二.将采集到的图像进行二值化 三.下面为完整显示函数 备注:大家主需要修改对应的引脚就行(修改初始化和宏定义) led.c文件 # ...

最新文章

  1. 一篇虚拟试穿的论文介绍
  2. 走进元学习:概述不同类型的元学习方法
  3. freemarker中js里面取字符串,换行导致报错的解决办法
  4. Xtreme ToolkitPro 编译过程详解
  5. c语言编程每日一练教程,每日一练 | C语言之指针
  6. bootstrap table无法服务器分页_[精选] MySQL百万数据,你如何用分页来查询数据
  7. Git 初学札记(十)—— Reset 回退的三种状态解析
  8. vb6.0快速操作注册表函数大全(仅字符串KEY值部分)
  9. (转载)学习Javascript闭包(Closure)
  10. opencv计算机视觉学习笔记一
  11. java中日期做减法_Java中日期的加法和减法
  12. Skype国际版下载地址(非Tom版)
  13. element ui中el-image不显示图片
  14. Frodo and pillows CodeForces - 760B (二分)
  15. Hopcroft-Carp(有点难)
  16. 毕业论文标题和目录生成
  17. python生成桌面路径(winreg)
  18. Django cms 教程五:添加内容
  19. python中关于try,expect的用法
  20. python cnn 股市_股市分析——ATR指标(附python代码)

热门文章

  1. linux密码过期不修改,Linux解决用户密码过期但不用修改密码的方法
  2. python爬虫实战教程分享 或许你可以看一下这篇文章
  3. 程序员在火车站候车室写代码画面曝光,网友:程序员的悲哀
  4. 模板 | 如何画出漂亮的深度学习模型图
  5. 超赞Transformer+CNN=SOTA!
  6. 收藏 | 机器学习、深度学习调参手册
  7. 写给小白的机器学习之决策树算法详解(附实战源码)
  8. (转) 深度模型优化性能 调参
  9. Hybrid A*论文解析(1)
  10. 7系统启动到一半停止_扛不住了!可口可乐巨震:500个品牌砍一半,裁员4000人.........