AppleSeeker's Tech Blog
Welcome to AppleSeeker's space

今天这篇文章的主题就是如何获取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

 

Author:Appleseeker
Date:2008-08-21

posted on 2008-08-21 19:57  AppleSeeker(冯峰)  阅读(2966)  评论(4编辑  收藏  举报