コード例 #1
0
        private vShortCutKey GetVShortCutKey(string KeyNum, int LongPressParam, string TargetName)
        {
            vShortCutKey CurrentEntity = null;

            var EntityList = new List <vShortCutKey>();

            if (LongPressParam == 0)
            {
                EntityList = CurrentNodetShortCutKey.Where(T1 => T1.ShortCutKey == KeyNum).ToList();                     //滚轮和屏幕键不验证长按或短按
            }
            else
            {
                EntityList = CurrentNodetShortCutKey.Where(T1 => T1.ShortCutKey == KeyNum && T1.LongPress == LongPressParam).ToList();
            }

            CurrentEntity = EntityList.FirstOrDefault(T1 => T1.TargetProgramName == TargetName);
            if (CurrentEntity != null)
            {
                return(CurrentEntity);
            }

            CurrentEntity = EntityList.FirstOrDefault(T1 => string.IsNullOrEmpty(T1.TargetProgramName));
            if (CurrentEntity != null)
            {
                return(CurrentEntity);
            }

            return(null);
        }
コード例 #2
0
        /// <summary> 运行当前节点的某个快捷键
        /// 运行当前节点的某个快捷键
        /// </summary>
        /// <param name="KeyNum">当前节点的键代码</param>
        private bool RunShortcutKeyContens(string KeyNum)
        {
            vShortCutKey CurrentEntity = CurrentNodetShortCutKey.Where(T1 => T1.ShortCutKey == KeyNum).FirstOrDefault();

            if (CurrentEntity == null)
            {
                return(false);
            }
            if (CurrentEntity.OwningChidrenNode)
            {
                ShowKey(CurrentEntity.ShortCutKeyID);
                return(true);
            }
            if (string.IsNullOrEmpty(CurrentEntity.ShortCutKeyPath))
            {
                return(false);
            }
            try
            {
                ControlButton.IsRunProgram = true;
                switch (CurrentEntity.ShortCutKeyType)
                {
                case 0:    //程序
                case 1:    //


                    List <string> FilePathList = CurrentEntity.ShortCutKeyPath.Split(' ').ToList();
                    Regex         PathRegex    = new Regex(@".*?(\.exe)");         //获取程序路径
                    Regex         ParamRegex   = new Regex(@"(?<=.*?(\.exe) ).*"); //获取参数

                    string PathString  = CurrentEntity.ShortCutKeyPath;            //程序路径文本
                    string ParamString = "";                                       //参数文本

                    Match PathResultMatch = PathRegex.Match(PathString);
                    if (PathResultMatch.Success)    //尾缀为.exe才获取参数,没有的话就视为不带参数的文件夹直接打开
                    {
                        ParamString = ParamRegex.Match(PathString).Value;
                        PathString  = PathResultMatch.Value;
                    }

                    UniversalMethod.RunProgram(PathString, ParamString);    //启动程序
                    break;

                case 2:    //系统组合键
                    UniversalMethod.KeyBoardDown(GetSysShortcutKey(CurrentEntity.ShortCutKeyPath));
                    break;
                }
            }
            catch
            {
                return(false);
            }
            return(true);
        }
コード例 #3
0
        /// <summary> 检查是否拥有子节点
        /// </summary>
        private bool OwningChidren(vShortCutKey KeyEntity)
        {
            int ResultCount = tShortCutKeyDataSource.Where(T1 => T1.ParentID == KeyEntity.ShortCutKeyID).Count();

            if (ResultCount == 0)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
コード例 #4
0
        /// <summary> 刷新DataGridView
        ///
        /// </summary>
        private void RefreshDataGridView()
        {
            string CurrentSelectID = CurrentNode_dataGridView.GetSelectedRowValue("ShortCutKeyID");


            TreeNode            CurrentNode          = ShortcutKey_otTreeView.SelectedNode;
            List <tShortCutKey> tShortCutKeyListTemp = new List <tShortCutKey>();

            if (CurrentNode == null || CurrentNode.Name == "BaseNode")
            {
                tShortCutKeyListTemp = tShortCutKeyDataSource.Where(T1 => string.IsNullOrEmpty(T1.ParentID)).ToList();
            }
            else
            {
                tShortCutKeyListTemp = tShortCutKeyDataSource.Where(T1 => CurrentNode.Name == T1.ParentID).ToList();
            }

            List <vShortCutKey> vShortCutKeyListTemp = new List <vShortCutKey>();//最终的数据源

            foreach (tShortCutKey tShortCutKeyItem in tShortCutKeyListTemp)
            {
                vShortCutKey vShortCutKeyTemp = UniversalMethod.ClassToClass <tShortCutKey, vShortCutKey>(tShortCutKeyItem, new vShortCutKey());
                vShortCutKeyTemp.Icon                = tShortCutKeyItem.ShortCutKeyImg.ToImage();
                vShortCutKeyTemp.TargetIcon          = tShortCutKeyItem.TargetProgramImg.ToImage();
                vShortCutKeyTemp.KeyName             = UniversalMethod.GetKeyName(tShortCutKeyItem.ShortCutKey);
                vShortCutKeyTemp.ShortCutKeyTypeName = UniversalMethod.GetTypeName(tShortCutKeyItem.ShortCutKeyType);
                vShortCutKeyTemp.OwningChidrenNode   = OwningChidren(vShortCutKeyTemp);
                vShortCutKeyListTemp.Add(vShortCutKeyTemp);
            }
            CurrentNode_dataGridView.DataSource = vShortCutKeyListTemp;

            #region  子节点的话就用颜色区分出来
            foreach (DataGridViewRow Rowitem in CurrentNode_dataGridView.Rows)
            {
                if (Rowitem.Cells["IsChidren"].Value.ToString() == "True")
                {
                    DataGridViewCellStyle CellStyleTemp = Rowitem.DefaultCellStyle;
                    CellStyleTemp.BackColor = Color.Blue;
                    //CellStyleTemp.SelectionBackColor = ShortcutKeyItem_Box.ShortcutKeyItem_Box_StateColor.OwiningChidren.Click;
                }
            }
            #endregion  子节点的话就用颜色区分出来

            CurrentNode_dataGridView.SetSelectedRowByValue("ShortCutKeyID", CurrentSelectID);
        }
コード例 #5
0
        /// <summary> 运行当前节点的某个快捷键
        /// 运行当前节点的某个快捷键
        /// </summary>
        /// <param name="KeyNum">当前节点的键代码</param>
        private bool RunShortcutKeyContens(string KeyNum, int LongPressParam)
        {
            Runing = true;
            try
            {
                var ForegHandle = WindowsAPI.GetForegroundWindow();
                WindowsAPI.GetWindowThreadProcessId(ForegHandle, out int ProgramID);
                var ProcessObj = Process.GetProcessById(ProgramID);


                var ProgramInfo = GetForeProgramInfo();
                var ProgName    = ProgramInfo?.Name ?? "";
                var ForeImage   = ProgramInfo?.Img;
                var ForeImgHex  = ProgramInfo?.ImgHex ?? "";

                vShortCutKey CurrentEntity = GetVShortCutKey(KeyNum, LongPressParam, ProgName);
                if (CurrentEntity == null)
                {
                    #region 添加新的快捷键

                    tShortCutKey AddData = new tShortCutKey()
                    {
                        ShortCutKeyName   = "新增快捷键",
                        TargetProgramImg  = ForeImgHex,
                        TargetProgramName = ProgName,
                        ParentID          = CurrentShortcutKeyID,
                        ShortCutKey       = KeyNum,
                        LongPress         = LongPressParam,
                        ShortCutKeyPath   = "",
                        ShortCutKeyType   = 0,
                        ShortCutKeyImg    = ""
                    };
                    ((frmShortcutKeyManage)ParentForm).AddtShortcutKey(AddData);
                    return(false);

                    #endregion 添加新的快捷键
                }
                if (CurrentEntity.OwningChidrenNode)
                {
                    ShowKey(CurrentEntity.ShortCutKeyID);
                    return(true);
                }
                if (string.IsNullOrEmpty(CurrentEntity.ShortCutKeyPath))
                {
                    return(false);
                }
                try
                {
                    ControlButton.IsRunProgram = true;
                    switch (CurrentEntity.ShortCutKeyType)
                    {
                    case 0:    //程序
                    case 1:    //


                        List <string> FilePathList = CurrentEntity.ShortCutKeyPath.Split(' ').ToList();
                        Regex         PathRegex    = new Regex(@".*?(\.exe)");         //获取程序路径
                        Regex         ParamRegex   = new Regex(@"(?<=.*?(\.exe) ).*"); //获取参数

                        string PathString  = CurrentEntity.ShortCutKeyPath;            //程序路径文本
                        string ParamString = "";                                       //参数文本

                        Match PathResultMatch = PathRegex.Match(PathString);
                        if (PathResultMatch.Success)    //尾缀为.exe才获取参数,没有的话就视为不带参数的文件夹直接打开
                        {
                            ParamString = ParamRegex.Match(PathString).Value;
                            PathString  = PathResultMatch.Value;
                        }

                        UniversalMethod.RunProgram(PathString, ParamString);    //启动程序
                        break;

                    case 2:    //系统组合键
                        UniversalMethod.KeyBoardDown(GetSysShortcutKey(CurrentEntity.ShortCutKeyPath));
                        break;
                    }
                }
                catch
                {
                    return(false);
                }
            }
            catch (Exception EX)
            {
                throw EX;
            }
            finally
            {
                Runing = false;
            }
            return(true);
        }