WM自定义桌面"今日插件"
2009-06-06 16:33 老羽 阅读(2151) 评论(5) 编辑 收藏 举报在PPC、Mobile5、Mobile6中,自定义桌面快捷方式是通过“今日插件”完成的。近日我研究了“今日插件”的开发过程,和大家一起分享我的心得。
1.今日插件必须以C++标准动态链接库完成,并且必须包含导出函数InitializeCustomItem。声明如下:
HWND APIENTRY InitializeCustomItem(TODAYLISTITEM *ptli, HWND hWndParent)
此方法中完成的工作,类似c++ sdk开发win32窗体的过程。
2.导出函数InitializeCustomItem的序号必须定义为240,所以必须利用def文件声明,我在测试过程中,因为没有定义序号,一直没有实现功能。估计操作系统是按序号调用此dll的方法。def文件如下:
EXPORTS
InitializeCustomItem @ 240 NONAME
3. 完成dll编写后 ,需要注册表中注册:参考以下格式:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Today\Items\Topevery.TodayPlus]
"Options"=dword:00000000
"Type"=dword:00000004
"DLL"="\\Program Files\\Topevery\\Topevery.TodayPlus.Addin.dll"
"Name"="Topevery.TodayPlus"注册表的内容和 函数InitializeCustomItem中的参数TODAYLISTITEM *ptli对应,你会发现TODAYLISTITEM 结构体的东西就是注册表的内容;
4.今日插件相关的消息:以WM_TODAYCUSTOM_开头的常量
5.参考文章:
- http://www.christec.co.nz/blog/archives/275这位大牛实现了,C++ dll 结合嵌入c#窗体,动态链接库用c++实现,界面用c#实现,通过SendMessage自定义的消息通讯和刷新UI。很有价值。。。。不过启动速度比较慢。
- http://www.codeproject.com/KB/mobile/CTodayWindow.aspx封装了很好的实现“今日插件”的基类,很容易看懂和实现,不过有点点小缺陷,没有实现点击和导航键进入时的效果。
6.代码不提供了,实际上,看完了上面说的2篇参考文章,绝对不会有任何问题了。