织梦CMS - 轻松建站从此开始!

罗索实验室

当前位置: 主页 > 嵌入式开发 > Windows CE >

Windows Mobile 里面调用MMS的问题

落鹤生 发布于 2012-10-24 09:21 点击:次 
MMS一直是第三方的产品,微软并没有官方的调用方式,所以这个问题一直困扰我这个需要调用了人, 昨天做了些调研。 现在汇总一下, 看看是不是管用。
TAG:

MMS一直是第三方的产品,微软并没有官方的调用方式,所以这个问题一直困扰我这个需要调用了人, 昨天做了些调研。 现在汇总一下, 看看是不是管用。

最初的想法是调用tmail, 加入命令行参数。
试了一下
string sms = "-transport /"SMS/" -to /"13918834065/" -body /"simple SMS body/"";
CreateProcess("tmail.exe", sms, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr.Zero, new Byte[128], pi);
这 里的SMS是可以工作的,但是换作MMS的时候就不罩了,只是打开了信息这个应用程序(就是运行了tmail,然后忽略了后面的参数) 是什么原因以我有限的智慧难以捉摸啊。看到有些人用的参数不是"-transport"而是"-service"不知道什么原因 我这里是不工作的。

所以只能走其他路了, 看到很多人写的MMS Composer的攻关之路我觉得太复杂, 搞不懂, 就找个简单的来弄。MailComposeMessage, 就是这个cemapi里面的接口据说也行就试试看。
这个函数的接口是一个叫MAILCOMPOSEFIELDS的struct的指针,但是里面的具体参数值MSDN的提示和没有提示没有任何区别,求爷爷告奶奶找到了些线索。
pmcf.pszAccount = _T("SMS");
// for MMS
pmcf.pszMsgClass = _T("IPM.MMS");
// for SMS
pmcf.pszMsgClass = _T("IPM.SMStext");
这个pszAccount和pszMsgClass是必须的,这个值从什么地方来呢?就是注册表里面来
HKEY_LOCAL_MACHINE/Software/Microsoft/Inbox/Svc下面有很多的服务, 我用的手机(HTC S1)下面我们看到了SMS而没有MMS, 所以这个MMS就只能通过SMS账户来发了。然后在SMS的MsgClasses
下面我们找到了一个项IPM.MMS, 值为1, 所以我们认定这个pszMsgClass的名字就是它了。同时还有一个IPM.SMStext,当然SMS的话用它就搞定了。
但是, 这个有个但是, 不是所有的手机都是这样设置的,看了D600就不是这样, 它在HKEY_LOCAL_MACHINE/Software/Microsoft/Inbox/Svc下面有MMS1, 那自然我们就需要写
pmcf.pszAccount = _T("MMS1");啦,所以general的做法读注册表项, 有mms1就用他, 没有就看sms, 找sms里面的msgClass就差不多了。至少在S1上现在还是跑的挺欢的。慢慢更新如果能找到更多手机的话

(hhygcy)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/201210/16333.html]
本文出处:CSDN博客 作者:hhygcy 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容