mapirule编译及使用总结

   本来想编写一个手机短信拦截功能的模块,最开始采用MessageInterceptor这个库的,使用很方面,在windwos mobile6.0下可以正常拦截。但是程序部署到windows mobile6.5下就不好使了,同样的一段代码,拦截功能失效,不知道是手机设置的问题还是手机系统的问题,上网查了很多资料,可能是由于mobile6.5不支持的原因。于是乎改变套路,采用另外一种功能强大但是不易使用的方法来拦截短信,使用mapirule。

一、mapirule源程序编译及例子程序:

1.如果安装了windows Mobile5.0则在安装目录下有源程序,但是没有c#的调用例子程序

目录:C:\Program Files\Windows Mobile 5.0 SDK R2\Samples\Smartphone\CPP\Win32\Mapirule

2.如果安装了windows Mobile6.0则安装目录下没有c++源程序,需要自己去手动下载

地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyId=98CCF3D4-DB7C-4A7D-A323-53BBDBBE0420&displaylang=en

问题:刚刚下载的源程序或者mobile5.0自带的程序,使用vc++2008 源程序不能成功编译,

首先project属性->c/c++->预编译头->不使用预编译头。(可能是因为C代码)

尝试使用project属性->c/c++->常规->附加包含目录中加入C:\Program Files\Microsoft Visual Studio 9.0\SmartDevices\SDK\Smartphone2003\Include中的包含文件,

使用project属性->链接器->常规->附加库目录中 加入C:\Program Files\Microsoft Visual Studio 9.0\SmartDevices\SDK\Smartphone2003\Lib 库文件 仍然提示

“无法解析的外部符号 MAPIFreeBuffer”

查看MSDN说明了使用MAPIFreeBuffer的必需条件:
Requirements
Pocket PC: Pocket PC 2002 and later
Smartphone: Smartphone 2002 and later
OS Versions: Windows CE 3.0 and later
Header: mapix.h
Library: cemapi.lib

于是在maipirule.cpp中加入如下代码:

#include<mapix.h>

#pragma comment(lib, "cemapi.lib")     可以正常编译了,跟前面项目属性的配置没有关系,默认就可以。


二、mapirule根据自己拦截规则改造,默认拦截zzz的短消息


三、将改造后的dll使用注册表注册


四、在托管程序中调用mapi

http://www.cnblogs.com/jackdong/archive/2011/05/10/2041799.html

五、在HTC手机上测试拦截功能


posted @ 2011-05-10 11:29  董雨  阅读(259)  评论(0编辑  收藏  举报