WM有约II(一):你在干嘛?
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(一):你在干嘛?相关推荐
- WM有约II(二):持续改进
WM有约II(二):持续改进 Written by Allen Lee 自定义"你在干嘛?" 在上一集结束的时候,我们发现一个极其严重的问题--这个应用程序会忽略我们最初希望截获的 ...
- WM有约(三):下一次是什么时候?
WM有约(三):下一次是什么时候? Written by Allen Lee 不要留恋过去 怎样才能约束用户,不让其选择过去的日期呢?有一个很傻的办法,就是每次启动应用程序的时候,自动把MonthCa ...
- WM有约(五):部署应用程序
WM有约(五):部署应用程序 Written by Allen Lee 创建安装包 创建一个新的项目,用来部署Windows Mobile应用程序的项目模板是Other Project Types\S ...
- 艾伟:WM有约(一):你好,CF
Written by Allen Lee 来,和CF打个招呼! 在这个系列里,我将会使用Visual Studio 2008来创建Windows Mobile 6 Professional应用程序,如 ...
- WM中的OutLook开发和操作
昨天闲来无视,学习了一下WM的基本开发.看WM有约的那套教程心里痒痒,于是下载了SDK,看看DEMO,在Sample中的示例进行加工.小有一点心得.其实总的来说难度也不是很大,以前没有做过FORM的程 ...
- 【Comet OJ - Contest #5 - C】迫真小游戏(优先队列,贪心构造,树,字典序)
题干: H君喜欢在阳台晒太阳,闲暇之余他会玩一些塔防小游戏. H君玩的小游戏可以抽象成一棵 nn 个节点的有根树,树以 11 为根,每个点的深度定义为其到根的简单路径上的点数(根的深度为 11). H ...
- Comet OJ - Contest #5 D 迫真小游戏 (堆+set)
迫真小游戏 已经提交 已经通过 时间限制:2000ms 内存限制:256MB 73.98% 提交人数:196 通过人数:145 题目描述 H君喜欢在阳台晒太阳,闲暇之余他会玩一些塔防小游戏. H君玩的 ...
- 20190325 Django自定义过滤器和自定义模板标签
代码布局(死去活来) 自定义要先解决几个问题: 1). 在哪里定义,要将代码写在哪里? app目录下的名为templatetags的文件夹,必须叫这个名字.这个文件夹必须是一个python的包(pyt ...
- 飞思卡尔比赛K60驱动OLED12864显示摄像头采集的赛道图像,完整代码分享
一.首先采集摄像头图像,由于硬件不同采集方式也不一样,我就不多做说明 二.将采集到的图像进行二值化 三.下面为完整显示函数 备注:大家主需要修改对应的引脚就行(修改初始化和宏定义) led.c文件 # ...
最新文章
- 一篇虚拟试穿的论文介绍
- 走进元学习:概述不同类型的元学习方法
- freemarker中js里面取字符串,换行导致报错的解决办法
- Xtreme ToolkitPro 编译过程详解
- c语言编程每日一练教程,每日一练 | C语言之指针
- bootstrap table无法服务器分页_[精选] MySQL百万数据,你如何用分页来查询数据
- Git 初学札记(十)—— Reset 回退的三种状态解析
- vb6.0快速操作注册表函数大全(仅字符串KEY值部分)
- (转载)学习Javascript闭包(Closure)
- opencv计算机视觉学习笔记一
- java中日期做减法_Java中日期的加法和减法
- Skype国际版下载地址(非Tom版)
- element ui中el-image不显示图片
- Frodo and pillows CodeForces - 760B (二分)
- Hopcroft-Carp(有点难)
- 毕业论文标题和目录生成
- python生成桌面路径(winreg)
- Django cms 教程五:添加内容
- python中关于try,expect的用法
- python cnn 股市_股市分析——ATR指标(附python代码)
热门文章
- linux密码过期不修改,Linux解决用户密码过期但不用修改密码的方法
- python爬虫实战教程分享 或许你可以看一下这篇文章
- 程序员在火车站候车室写代码画面曝光,网友:程序员的悲哀
- 模板 | 如何画出漂亮的深度学习模型图
- 超赞Transformer+CNN=SOTA!
- 收藏 | 机器学习、深度学习调参手册
- 写给小白的机器学习之决策树算法详解(附实战源码)
- (转) 深度模型优化性能 调参
- Hybrid A*论文解析(1)
- 7系统启动到一半停止_扛不住了!可口可乐巨震:500个品牌砍一半,裁员4000人.........