.Net Compact Framework 基础篇(7)[转]

今天这篇文章的主题就是如何获取Windows Mobile设备中的MRU(最近打开文件列表)

关于MRU的获取,有2种方法。

先来介绍用.net开发的方法---访问注册表。

在注册表的:[HKEY_CURRENT_USER\Software\Microsoft\Shell\TaskSwitch]中,存有所有的MRU中的信息。可能你访问的时候会有很多,但在Windows Mobile显示的时候,只显示从0开始的几项(一般为5项)。

代码演示效果:
WM上显示的MRU

程序获取到的MRU信息:

注意看0项,就是和前面MRU排在第一位的计算器一致,而且,注册表里存的是绝对路径,可以启用线程来直接访问。

启用线程的方法:

1 Process XXX = new Process();
2 XXX.StartInfo.FileName = "路径+文件名";
3 XXX.StartInfo.Arguments = 参数;

访问注册表的方法:

 1 private void menuItem1_Click(object sender, EventArgs e)
 2 {
 3     string strRegPath = @"Software\Microsoft\Shell\TaskSwitch";
 4     RegistryKey regCurrentUser = Registry.CurrentUser.OpenSubKey(strRegPath);
 5     string[] strList = regCurrentUser.GetValueNames();
 6 
 7     string strKeyValue = "";
 8     foreach (string strKey in strList)
 9     {
10         strKeyValue = "";
11         strKeyValue = regCurrentUser.GetValue(strKey, "").ToString();
12         listBox1.Items.Add(string.Format("{0} - {1}", strKey, strKeyValue));
13     }
14     regCurrentUser.Close();
15 }

记得最后要关闭注册表。

注意事项:
当你看到这里时,想,既然可以取到对应的值,那是否可以修改呢,然后就可以自己控制了呢?
很遗憾,即使你将值修改了,MRU列表也不会发生变化。(肯定还依赖于别的地方,暂时我还没找到)

方法二:用c++操作:

参考:MFC框架中对最近文件列表的支持 

下面介绍下,在WM的界面上的未读短信数和邮件数的获取
注册表[HKEY_CURRENT_USER\System\State\Messages\TotalEmail\Unread]的Count表示邮件未读数量
注册表[HKEY_CURRENT_USER\System\State\Messages\sms\Unread]的Count表示短信未读数量

最后补充一个小技巧,如何读取远程计算机的注册表。

使用VS2005或VS2008菜单中Remote Tools下的Remote Registry Editor工具。

可以连接到WM设备来看其注册表键值。

代码下载:DeviceMRUDemo.rar

posted on 2009-03-04 13:02  黄裳  阅读(126)  评论(0)    收藏  举报

导航