示例#1
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);
        }
示例#2
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);
        }