【译】菜单的扩展性 ( 以下内容适用平台 Microsoft Windows CE 5.0 )
日历,任务,联系人应用程序都支持外部程序对其进行菜单项的添加
要注册你的应用程序,你必须在HKEY_LOCAL_MACHINE root 下 创建一个注册键值。此键值应该存在于Software\Microsoft\PimApps
上述例子中的 PIMAPP 应该用 Contacts,Tasks, 或者 Calendar 来替换掉,这取决于你需要修改那个程序的菜单。
键需要两个实体,第一个就是 DLL ,它的名称应该是你 DLL 的名称,第二个是 Menu ,它的制应该你你希望显示在菜单中的菜单项文字。还是那句话
下面的代码例子显示了可能的注册键所需要的两个实体:
DLL\"dialer.dll" Menu\"Dial Contact"
你要注册的 DLL 必须expose 下面的函数,此函数应该在用户选择你的菜单项后被调用。
void CePimCommand (HWND hWnd, PIMTYPE ptData, UINT uDataCount, HANDLE *rghData, void *pReserved);
PIMTYPE 是一个枚举类型,定义如下:
typedef enum tagPIMTYPE {
PT_CALENDAR = 0,
PT_TASKS,
PT_CONTACT } PIMTYPE;
参数 |
解释 |
hWnd |
应用程序窗口句柄 |
ptData |
应用程序调用此函数 |
uDataCount |
rghData 数组中的项目个数 |
*rghData |
当前被选中项目的对象 ID 数组 |
*pReserved |
保留参数,在此版本中为NULL |
你可以从菜单项的对象 ID来操作或者使用这些项目,通过在 Application 对象中调用 GetItemFromOid 。
在msdn上有一篇文章介绍如何加softkey menu,但是其中没有讲如何添加file explorer的softkey menu。文章链接如下:
http://msdn2.microsoft.com/en
下面是关于如何往Contacts中添加一个右软键菜单的例子:
http://msdn2.microsoft.com/en
1 Hook keyboard ,判断如果是联系人列表 弹自己的menu ,至于如果获得用户选择的联系人号码需要一点点技巧
我是这样做的:读联系人列表选择的index 然后读contacts database取用户的mobile phone
2 替换联系人列表的默认menu bar 这个没有玩过
得到联系人的号码后 自己给号码前 增加17951 然后拨号就可以
一个事例 可以参考我的程序 《手机按键精灵》 http://www.spbase.com
替换联系人列表的默认menu bar 这个没有玩过
这个只能是猜测,因为我没有实际做过
取得联系人windows handle SHFindMenubar 得到菜单句柄 然后
这段代码在自己的app可以运行 你可以运用一个简单的技巧 让联系人窗口运行这段代码
HWND hMenuBar = SHFindMenuBar(m_hWnd);
HMENU hPopupMenu = SHGetSubMenu(hMenuBar, ID_WORK);
for(int i=0;i<MENU_COUNT;i++)
RemoveMenu(hPopupMenu, 0, MF_BYPOSITION);
AppendMenu(hPopupMenu, MF_BYPOSITION, ID_IMPORT_ONE_LIST, StringFromResources(IDS_ADD
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架