无聊客的专栏

寻找逝去的岁月

陈军ID:yzx0023
48791次访问,排名2147好友6人,关注者31
yzx0023的文章
原创 16 篇
翻译 0 篇
转载 0 篇
评论 363 篇
无聊客的公告
本BLOG所有文章都系作者无聊客原创,请尊重作者辛苦劳动,转载请注明版权出处。
最近评论
hans:每条SMS有唯一标识吗?如何取得?
就像联系人的OID~~~
tony:和你做个友情链接好吗?
影子40524759QQ
壳牌润滑油http://www.ctrhy.com
tony:和你做个友情链接好吗?
影子40524759QQ
壳牌润滑油http://www.ctrhy.com
tony:和你做个友情链接好吗?
影子40524759QQ
壳牌润滑油http://www.ctrhy.com
tony:和你做个友情链接好吗?
影子40524759
美孚润滑油http://www.ctrhy.com
文章分类
收藏
    相册
    me
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Pocket PC & Smartphone 短信图标轻松换(By 无聊客)收藏

    新一篇: (原创)CE MAPI实例讲解 --- Custom Form介绍(九) | 旧一篇: (原创)CE MAPI实例讲解 --- 读取Message附件(八)

           随着支持Windows Mobile的手机越来越多,想不想让自己的手机与众不同呢?如果你有兴趣,那么让我们从最常用的短信开始,让我们给系统的短信换换脸。

           首先短信接收程序是系统tmail应用程序下面的一个插件,一般来说叫tmail通过两部分键值来管理底下的插件,一部分和帐户类型相关,键值位置在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Inbox\Svc]下面,它通常管理着帐户类型信息,一般与Message的传输协议有关,这里我们并不关心这个。另外一个和消息类型相关,键值位置在[HKEY_CURRENT_USER\Software\Microsoft\Inbox\MsgTypes\IPM]下面,它描述了和消息类型具体相关的信息,比如用什么DLL编辑或者播放该类型MESSAGE等等,其中也包含了我们所关心的MESSAGE图标的信息,下面我以系统SMS为例,说明一下如何替换掉系统默认的图标,换成我们自己的ICON,首先声明,不一定所有的ROM都支持该功能,只有比较新的WM5.0DEVICE才支持该功能,我试的是微软发布的320X240 SP横屏模拟器,有兴趣大家可以去下个来试试。

           首先我们把注意力集中到[HKEY_CURRENT_USER\Software\Microsoft\Inbox\MsgTypes\IPM\SMStext]这个键里面,这里描述的就是和SMS相关的信息,下面简要介绍一下:

           "DLL"="htmlnote.dll"           //表明Form DLL,所谓Form DLL,就是指拿来编辑和播放SMS的库,他应该支持FormFactoryEx调用接口。

           "Name"="SMS"                    //顾名思义,名字

           "GlyphInfo"=hex:\

          20,00,00,00,65,00,00,00,65,00,00,00,00,00,00,00,01,00,00,00,03,00,00,00,02,\

          00,00,00,00,00,00,00       //图标信息

           "GlyphDll"="htmlnote.dll"      //指定图标所在库,通常DEVICE里面没有这个键值,默认就是DLL指向的库。

     

           有没有看到GlyphInfo里面的两个65,其实它代表了图标的资源ID,0x65刚好是101

           消息的图标文件是按照一定格式组成的8位的位图文件,按照什么格式呢?别急,默认的图标文件不是在htmlnote.dll里面吗,而且ID101,读出来看看就知道,结果如下:

          

           不难看出,它是以一定宽度高度排列的ICON列表,每隔一定象素单位的块就代表一个类型对应ICON。对于不同分辨率,块大小是不一样的,下面列出常见的3种大小:

    • 16x16 (96 DPI)
    • 22x22 (131 DPI)
    • 32x32 (192 DPI)

           现在,不难看出,要想自己个性化SMS图标,要做以下几件事情:

    1.  一般不会全部替换系统的图标,所以你可以先把系统的图标先截出来,在它基础上在指定的位置换上自己的图标。

    2.  创建DLL工程,添加自己完成的BITMAP文件,通过GlyphInfo键值确定资源ID号,编译并且输出到\Windows目录下。

    3.  [HKEY_CURRENT_USER\Software\Microsoft\Inbox\MsgTypes\IPM\SMStext]下面创建STRING类型键值”GlyphDll”,值设置为你编好的库的名字,比如”MyIcon.dll”

    4.  重起TMAIL程序,看看效果,成功了没?

     

           这是更换以后的效果图:

           

     

          

           以前在CSDN上传图老是失败,看这次能不能成功。

           关于GlyphDll,我试过不少DEVICE,但是只有个别AKU2以上的设备才支持,如果大家试不出来,别急,先拿模拟器试试自己的做法有没有做,说不定DEVICE压根不支持,那就做无用功了,最新的SP横屏模拟器在微软网站即有下载。目前对于这块还不清楚的是透明色的设置,系统默认的是RGB252,1,255),还不知道怎么去改,今天先写到这,欢迎拍砖!

     

     无聊客(blog.csdn.net\yzx0023)

    2006-8-19

    yzx0023@gmail.com

          

     

    发表于 @ 2006年08月19日 00:58:00|评论(loading...)|编辑

    新一篇: (原创)CE MAPI实例讲解 --- Custom Form介绍(九) | 旧一篇: (原创)CE MAPI实例讲解 --- 读取Message附件(八)

    评论

    #ylli 发表于2006-09-12 16:32:00  IP: 61.51.109.*
    无聊客大侠,请问您知道怎么用wm5或者wm2003实现彩信接受发送功能吗?在csdn上找了半天也没发现有相关的提示:( 包括您的回复好像都没有,可以指点一下吗?感激不尽!!!
    #actionman 发表于2006-09-12 19:52:00  IP: 61.151.255.*
    to ylli
    彩信收发一般有第三方软件实现, 比如ArcSoft, 等等。
    你可参照TransportDemo和CustomForm这两个例子。
    #yzx0023 发表于2006-09-12 21:36:00  IP: 220.191.35.*
    To ylli:WM2003和2005上并没有默认的MMS实现,一般是第3方产商提供,比如Arcsoft,如果你自己要想实现,那是比较复杂的,涉及到MMS协议,网络交互,接收wap push消息等方面,如果要嵌入到系统默认收件箱程序tmail,还需要了解Form和Transport的机制,范围还是比较广的。
    #ylli 发表于2006-09-15 11:27:00  IP: 61.49.107.*
    谢谢指点,我现在的要在程序中实现接收短信彩信功能,短信按照无聊客大侠的指点可以实现了,就是彩信这个东西一头雾水,似乎无处下手,用的dopod的手机,彩信是和短信,邮件一起存储的,可是仍然不知道怎么读取:(~~~~~~
    #actionman 发表于2006-09-16 12:50:00  IP: 61.151.255.*
    http://www.bluespace.cn/Html/Csdn/2_47/View_4778659.html
    #yzx0023 发表于2006-09-18 09:16:00  IP: 218.108.41.*
    To ylli: 一些标准的属性,比如收件人,发件人,主题等等,可以通过MAPI操作,获取Message属性即可,对于具体内容视不同类型Message而异,特别是MMS,可能不同开发商的存储格式都是不一样的,微软并没有制定比较统一标准的接口。
    #ylli 发表于2006-09-19 11:17:00  IP: 61.48.132.*
    多谢两位指点,稍微有点眉目了,我再去研究研究,对了,大侠哪天给写个mms接收发送教程吧,比如通过mapi获取彩信的各种属性,内容可不可以就按照smil格式语言为例进行读取呢?(或者直接以某款手机进行说明?)

    热切期待中~~~~~吼吼
    #qwm888 发表于2006-12-07 10:45:08  IP: 61.151.255.*
    请教一个问题,在讯息中心 有一个关于签名的地方,可以对某一账号比如MMS或Outlook签名,现在不知道该如何判断在"此账号使用签名"以及"回复与转发时使用签名"是否被选中,以及用户的签名内容到哪里读取?好像这些东西应该在注册表中的,却不知道存在哪,请指点一下。 谢谢!
    #yzx0023 发表于2006-12-08 11:23:12  IP: 218.108.41.*
    to qwm888:不是放在注册表里的,首先获取IMsgStore对象(对应你的Account),然后获取它的属性:PR_CE_USE_SIGNATURE 表示是否此账号使用签名,PR_CE_USE_SIGNATURE_REPLY_FORWARD表示回复与转发时使用签名,PR_CE_SIGNATURE表示签名内容
    #qwm888 发表于2006-12-12 09:04:36  IP: 61.151.255.*
    已經讀出來了,謝謝指點!還有一個問題想問一下,我在使用FindMatchingContact()來做電話號碼匹配時,發現這個函數只能匹配存在機器中的聯係人,存在SIM卡上的無法匹配。不知道是否另有接口函數可以做匹配?如果能讀出存在内存中的SIM卡記錄也行。(我可以讀出SIM卡的,但不能每次匹配都去讀卡,不去讀又有記錄不一致的問題)謝謝!
    #yzx0023 发表于2006-12-12 09:57:09  IP: 218.108.41.*
    to qwm888:FindMatchingContact读取的outlook下面的数据,而早期的OUTLOOK不包含SIM信息,不过估计将来的版本会支持,你可以自己生成内存列表,把所有SIM信息一次性读进来,因为SIM信息叫有限,内存占用是很少的。
    #qwm888 发表于2006-12-13 08:57:56  IP: 61.151.255.*
    这种办法我现在正在用,有问题。如果每次匹配去读SIM记录,速度就会变慢,而如果在初始化时读进内存中,供以后匹配使用,如果SIM记录有改变的话,将无法及时更新内存中的记录,造成部分无法匹配或匹配错误。SIM卡中的记录开机时应该是由系统读到内存中去的,如果可以利用系统读取的记录,应该不会有这些问题了。不知可有办法得到这些记录?Thanks!
    #yzx0023 发表于2006-12-13 17:21:15  IP: 218.108.41.*
    To qwm888:SIM卡记录的修改实际上是可以得到通知消息的,SimInitialize时不是传了回调函数的吗,当记录修改时,SIM manager会调用这个回调通知APP,所以你可以保存自己的列表,当有记录修改时更新自己的列表就可以了
    #qwm888 发表于2006-12-14 11:11:35  IP: 61.151.255.*
    好的,我再試一下。 謝謝!
    #qwm888 发表于2006-12-21 20:38:40  IP: 61.151.255.*
    请教一个问题: 我在MMS中通过CreateProcess()调用 Windows MediaPlayer 播放临时文件后,关闭MediaPlayer, 删除临时文件会跳出“无法删除文件,出现资源分享违规,可能是来源档案或目的档案正在使用中”,这应该是由于MediaPlayer最小化,没有被关掉的缘故。但是我在程序中调用TerminateProcess()试图关掉MediaPlayer,总是失败。只有在CreateProcess(),紧接着调TerminateProcess(),才能把MediaPlayer进程结束掉。请问:有何办法可以实现,用MediaPlayer 播放一个临时文件后,顺利把这个临时文件删掉?
    Thanks!
    #yzx0023 发表于2006-12-24 12:14:03  IP: 60.180.202.*
    To qwm888: 要关掉程序不一定要TerminateProcess,你也可以找它的主窗口,给它发WM_CLOSE消息
    #kelly818 发表于2007-06-09 10:28:43  IP: 220.250.28.*
    请问怎么样给PPC应用程序在设备中的今日插件(或者程序)中有应用程序的图标啊!我的邮箱是kelly19850818@163.com,先谢谢了哦 !
    #yzx0023 发表于2007-06-09 22:02:22  IP: 125.120.165.*
    To kelly818:你只需要给你的应用程序添加指定的ICON资源,并且保证该ICON的ID值最小即可,这个应该和WINDOWS上的是一样的
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 无聊客