zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    this:从JavaScript执行上下文视角讲this
    作用域链和闭包:代码中出现相同的变量,JavaScript引擎如何选择
    调用栈:为什么JavaScript代码会出现栈溢出
    变量提升:JavaScript代码是按顺序执行的吗
    uniapp
    uniapp
    uniapp
    uniapp
    js
    uniapp
  • 原文地址:https://www.cnblogs.com/xyzlmn/p/3168330.html
Copyright © 2011-2022 走看看