zoukankan      html  css  js  c++  java
  • 桌面右键加入[关闭显示器]菜单项

    起因

    购了个ThinkPad T450S,没发现其组合键有关闭显示器选项。而关闭显示器,在彻夜下载连续剧及大资料时,非常有用,于是就寻找方法。

    终于找到了个工具,Close LCD,27K大小,一点就关,易用之极。

    之前装ThinkPad电源管理器v4.0,其一有选项是在桌面右键菜单中加入[关闭显示器]选项,甚为怀念。现装v6版,没有其选项,好吧,想办法!

    于是在51nb上找到一方案,其用批处理加入注册表菜单项,可以解决问题。但问题来了,操作不直观,没有图标及位置。

    研究v4.0方案,提取更多信息,以c#写一小工具,实现简易安装与去除。记录过程,并分享制作的小工具,文章底部附有下载连接

    只是,它不仅加入桌面右键菜单,在所有文件夹右键菜单中,都存在。

    实现

    c#操作注册表而已,无奇,实现代码如下:

    namespace CloseLCD
    {
        public partial class MainForm : Form
        {
            public MainForm()
            {
                InitializeComponent();
    
                UpdateUIState();
            }
    
            private void UpdateUIState()
            {
                btnSet.Text = MenuItemExists() ? "从右键菜单移除" : "加入右键菜单";
                txtMenuText.Enabled = !MenuItemExists();
            }
    
            private bool MenuItemExists()
            {
                var path = Registry.GetValue(@"HKEY_CLASSES_ROOTDirectoryBackgroundshellTurnoffMonitorcommand", "", "");
                if (path == null)
                    return false;
                return File.Exists(path.ToString().Replace(""", ""));
            }
    
            private void InstallMenuItem()
            {
                try
                {
                    var key = Registry.ClassesRoot.CreateSubKey(@"DirectoryBackgroundshellTurnoffMonitor");
                    if (key != null)
                    {
                        string text = !string.IsNullOrEmpty(txtMenuText.Text) ? txtMenuText.Text : "关闭显示器(&M)";
                        key.SetValue("", text, RegistryValueKind.String);
                        string clPath = Path.Combine(Application.StartupPath, "CloseLCD.exe");
                        clPath = string.Format(""{0}"", clPath);
                        key.SetValue("Icon", clPath, RegistryValueKind.String);
                        key.SetValue("Position", "Bottom", RegistryValueKind.String);
                        key = key.CreateSubKey("command");
                        key.SetValue("", clPath, RegistryValueKind.String);
                        key.Close();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(this, "加入菜单项失败,请确认是否有杀毒软件等工具防护注册表。
    信息为:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
    
            private void btnSet_Click(object sender, System.EventArgs e)
            {
                //加入
                if (!MenuItemExists())
                    InstallMenuItem();
                //移除
                else
                {
                    try
                    {
                        using (var key = Registry.ClassesRoot.OpenSubKey(@"DirectoryBackgroundshellTurnoffMonitor", true))
                        {
                            if (key != null)
                                key.DeleteSubKeyTree("");
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(this, "移除菜单项失败,请确认是否有杀毒软件等工具防护注册表。
    信息为:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
    
                UpdateUIState();
            }
        }
    }

    效果

    在笔记本及单位LCD显示器上验证,工作正常。

    其界面及显示效果如下图:


    集成

    找到了关闭显示器的api函数,干脆置关闭与菜单设置于一体算了,省事。

     

    参考资料:

    为你的桌面右键添加一个“关闭显示器”的菜单!

    文件打包下载

    单文件版下载

  • 相关阅读:
    FlashInspector 【Firefox浏览器插件,flash分析工具】
    屌丝和木耳
    Flash剪贴板功能
    sql newid()随机函数
    SQL 视图
    向SQL Server 现有表中添加新列并添加描述.
    sql server 约束 查找
    创建与删除SQL约束或字段约束
    SQLServer
    利用排序规则特点计算汉字笔划和取得拼音首字母
  • 原文地址:https://www.cnblogs.com/crwy/p/9673565.html
Copyright © 2011-2022 走看看