Exemple #1
0
        /// <summary> 将按下的按键转换为键盘上的按键名称
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void KeyName_textBox_KeyDown(object sender, KeyEventArgs e)
        {
            TextBox CurrentControl = (TextBox)sender;

            CurrentEntity.ShortCutKey = e.KeyValue.ToString();
            CurrentControl.Text       = UniversalMethod.GetKeyName(CurrentEntity.ShortCutKey);
        }
        private void SelectProgram_button_MouseDown(object sender, MouseEventArgs e)
        {
            Task.Run(() =>
            {
                while (Control.MouseButtons != MouseButtons.None)
                {
                    var HandleInt = WindowsAPI.WindowFromPoint(Control.MousePosition.X, Control.MousePosition.Y);
                    WindowsAPI.GetWindowThreadProcessId(new IntPtr(HandleInt), out int ProgramID);
                    var ProcessObj = Process.GetProcessById(ProgramID);
                    if (ProcessObj == null)
                    {
                        Thread.Sleep(100);
                        continue;
                    }



                    this.Invoke(new Action(() =>
                    {
                        try
                        {
                            var FaileName           = ProcessObj.Modules[0].FileName;
                            Target_pictureBox.Image = UniversalMethod.GetImageByFileName(FaileName);
                        }
                        catch { }


                        Program_textBox.Text = ProcessObj.ProcessName;
                    }));

                    Thread.Sleep(100);
                }
            });
        }
Exemple #3
0
        /// <summary>
        /// 获取当前已激活的进程信息
        /// </summary>
        /// <returns></returns>
        public ProgramInfoTemp GetForeProgramInfo()
        {
            try
            {
                var ForegHandle = WindowsAPI.GetForegroundWindow();
                WindowsAPI.GetWindowThreadProcessId(ForegHandle, out int ProgramID);
                var ProcessObj = Process.GetProcessById(ProgramID);
                if (ProcessObj == null)
                {
                    return(null);
                }

                var ResultObj = ProgramInfoList.FirstOrDefault(T1 => T1.Name == ProcessObj.ProcessName);
                if (ResultObj != null)
                {
                    return(ResultObj);
                }


                var FileName   = ProcessObj.Modules[0].FileName;
                var ForeImage  = UniversalMethod.GetImageByFileName(FileName);
                var ForeImgHex = UniversalMethod.ByteArayToHex(ForeImage.ToByteArray());

                ResultObj        = new ProgramInfoTemp();
                ResultObj.Name   = ProcessObj.ProcessName;
                ResultObj.Img    = ForeImage;
                ResultObj.ImgHex = ForeImgHex;
                ProgramInfoList.Add(ResultObj);
                return(ResultObj);
            }
            catch
            {
                return(null);
            }
        }
Exemple #4
0
        /// <summary> 特殊按钮被点击
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SpecialKey_button_Click(object sender, EventArgs e)
        {
            frmShortcutKey_Edit_SpecialKey frm = new frmShortcutKey_Edit_SpecialKey();

            if (frm.ShowDialog() == DialogResult.OK)
            {
                string KeyNum = frm.KeyNum;
                CurrentEntity.ShortCutKey = KeyNum;
                KeyName_textBox.Text      = UniversalMethod.GetKeyName(CurrentEntity.ShortCutKey);
            }
        }
Exemple #5
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);
        }
Exemple #6
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);
        }
Exemple #7
0
        /// <summary> 显示某个节点下的所有快捷键
        /// 显示某个节点下的所有快捷键
        /// </summary>
        /// <param name="Parent">父节点ID,为空则为根节点</param>
        private void ShowKey(string ParentID = null)
        {
            List <tShortCutKey> tShortCutKeyTempList = null;

            if (string.IsNullOrEmpty(ParentID))
            {
                tShortCutKeyTempList = tShortCutKeyDataSource.Where(T1 => string.IsNullOrEmpty(T1.ParentID)).ToList();
            }
            else
            {
                tShortCutKeyTempList = tShortCutKeyDataSource.Where(T1 => T1.ParentID == ParentID).ToList();
            }

            //将tShortCutKey转换成vShortCutKey
            CurrentNodetShortCutKey = tShortCutKeyTempList.Select(T1 => UniversalMethod.ClassToClass <tShortCutKey, vShortCutKey>(T1, new vShortCutKey())).ToList();
            CurrentNodetShortCutKey.ForEach(T1 => T1.OwningChidrenNode = OwningChidren(T1));//加入是否有下级节点
            //keyLayoutShow.DataSource = CurrentNodetShortCutKey;
        }
Exemple #8
0
 /// <summary>
 /// 添加一个快捷键
 /// </summary>
 public void AddtShortcutKey(tShortCutKey Param)
 {
     Task.Delay(100).ContinueWith(task => {
         Invoke(new Action(() => {
             Param.ShortCutKeyImg    = UniversalMethod.ByteArayToHex(OfficeTools.Resource.Image.Image.ShortcutKeyDefualtImage.ToImage().ToByteArray());
             frmShortcutKey_Edit frm = new frmShortcutKey_Edit(Param);
             string NewID            = "";
             if (frm.ShowDialog() == DialogResult.OK)
             {
                 NewID = new ShortcutKeyManageService().AddShortCutKey(frm.CurrentEntity);
                 if (!string.IsNullOrEmpty(NewID))
                 {
                     InitKeyList();
                 }
             }
         }));
     });
 }
        private void FillContent()
        {
            if (CurrentEntity == null)
            {
                return;
            }
            Img_pictureBox.Image = CurrentEntity.ShortCutKeyImg.ToImage();
            Name_textBox.Text    = CurrentEntity.ShortCutKeyName;


            Target_pictureBox.Image = CurrentEntity.TargetProgramImg.ToImage();
            Program_textBox.Text    = CurrentEntity.TargetProgramName;

            KeyName_textBox.Text  = UniversalMethod.GetKeyName(CurrentEntity.ShortCutKey);
            TypeName_textBox.Text = UniversalMethod.GetTypeName(CurrentEntity.ShortCutKeyType);


            if (CurrentEntity.ShortCutKeyType == 2)
            {
                Path_panel.Visible          = false;
                SysShortcutKey_textBox.Text = CurrentEntity.ShortCutKeyPath;
            }
            else
            {
                Path_panel.Visible = true;
                Path_textBox.Text  = CurrentEntity.ShortCutKeyPath;
            }
            LongPress_checkBox.Checked = CurrentEntity.LongPress == 2;

            string ParentName = "根目录";

            if (!string.IsNullOrEmpty(CurrentEntity.ParentID))
            {
                tShortCutKey tShortCutKeyTemp = new ShortcutKeyManageService().GettShortCutKeyList(new tShortCutKey()
                {
                    ShortCutKeyID = CurrentEntity.ParentID
                }).FirstOrDefault();
                if (tShortCutKeyTemp != null)
                {
                    ParentName = tShortCutKeyTemp.ShortCutKeyName;
                }
            }
            ParentNode_textBox.Text = ParentName;
        }
Exemple #10
0
        /// <summary> 打开类型被选择
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SelectType_button_Click(object sender, EventArgs e)
        {
            frmShortcutKey_Edit_OpenType frm = new frmShortcutKey_Edit_OpenType();

            if (frm.ShowDialog() == DialogResult.OK)
            {
                byte TypeNum = frm.tShortCutKeyType;
                CurrentEntity.ShortCutKeyType = TypeNum;
                TypeName_textBox.Text         = UniversalMethod.GetTypeName(CurrentEntity.ShortCutKeyType);
                if (TypeNum == 2)
                {
                    Path_panel.Visible = false;
                }
                else
                {
                    Path_panel.Visible = true;
                }
            }
        }
        /// <summary> 确定键单机
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OK_button_Click(object sender, EventArgs e)
        {
            CurrentEntity.ShortCutKeyImg    = UniversalMethod.ByteArayToHex(Img_pictureBox.Image.ToByteArray());
            CurrentEntity.ShortCutKeyName   = Name_textBox.Text;
            CurrentEntity.TargetProgramImg  = UniversalMethod.ByteArayToHex(Target_pictureBox.Image.ToByteArray());
            CurrentEntity.TargetProgramName = Program_textBox.Text;

            if (CurrentEntity.ShortCutKeyType == 2)
            {
                CurrentEntity.ShortCutKeyPath = SysShortcutKey_textBox.Text;
            }
            else
            {
                CurrentEntity.ShortCutKeyPath = Path_textBox.Text;
            }

            CurrentEntity.LongPress = LongPress_checkBox.Checked ? 2 : 1;
            this.DialogResult       = DialogResult.OK;
            this.Close();
        }
Exemple #12
0
        /// <summary> 以当前选中的快捷键为基础添加一个快捷键
        ///
        /// </summary>
        /// <param name="IsChidren">[true:添加的快捷键是当前选中的快捷键的子节点;false:添加的选中快捷键的同级快捷键]</param>
        private string AddtShortcutKey(bool IsChidren = true)
        {
            tShortCutKey AddData = new tShortCutKey()
            {
                ShortCutKeyName = "新增快捷键",
                ParentID        = "",
                ShortCutKey     = "",
                ShortCutKeyPath = "",
                ShortCutKeyType = 0,
                ShortCutKeyImg  = ""
            };

            AddData.ShortCutKeyImg = UniversalMethod.ByteArayToHex(OfficeTools.Resource.Image.Image.ShortcutKeyDefualtImage.ToImage().ToByteArray());
            TreeNode CurrentNode = ShortcutKey_otTreeView.SelectedNode;

            if (CurrentNode != null)
            {
                tShortCutKey CurrentEntity = tShortCutKeyDataSource.Where(T1 => T1.ShortCutKeyID == CurrentNode.Name).FirstOrDefault();
                if (CurrentEntity != null)
                {
                    AddData.ParentID = CurrentEntity.ParentID;
                    if (IsChidren)
                    {
                        AddData.ParentID = CurrentEntity.ShortCutKeyID;
                    }
                }
            }
            int KeuNum = GetDefaultKey(AddData.ParentID);

            if (KeuNum != -1)
            {
                AddData.ShortCutKey = KeuNum.ToString();
            }
            string NewID = new ShortcutKeyManageService().AddShortCutKey(AddData);

            if (!string.IsNullOrEmpty(NewID))
            {
                InitKeyList();
            }
            return(NewID);
        }
Exemple #13
0
        /// <summary> 将按下的按键转换为键盘上的按键名称
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SysShortcutKey_textBox_KeyDown(object sender, KeyEventArgs e)
        {
            List <string> KeyList = new List <string>();

            if (e.Control)
            {
                KeyList.Add("Control");
            }
            if (e.Alt)
            {
                KeyList.Add("Alt");
            }
            if (e.Shift)
            {
                KeyList.Add("Shift");
            }

            List <Keys> KeysEnumList = new List <Keys>();

            KeysEnumList.Add(Keys.Control);
            KeysEnumList.Add(Keys.ControlKey);
            KeysEnumList.Add(Keys.LControlKey);
            KeysEnumList.Add(Keys.RControlKey);
            KeysEnumList.Add(Keys.Shift);
            KeysEnumList.Add(Keys.ShiftKey);
            KeysEnumList.Add(Keys.LShiftKey);
            KeysEnumList.Add(Keys.RShiftKey);
            KeysEnumList.Add(Keys.Alt);
            KeysEnumList.Add(Keys.Menu);
            KeysEnumList.Add(Keys.LMenu);
            KeysEnumList.Add(Keys.RMenu);

            if (!KeysEnumList.Contains(e.KeyCode))
            {
                KeyList.Add(UniversalMethod.GetKeyName(e.KeyValue.ToString()));
            }
            SysShortcutKey_textBox.Text = string.Join("+", KeyList);
        }
Exemple #14
0
 /// <summary> 选择文件路径时
 ///
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void SelectPath_button_Click(object sender, EventArgs e)
 {
     if (CurrentEntity == null)
     {
         return;
     }
     switch (CurrentEntity.ShortCutKeyType)
     {
     case 0:    //文件/程序
         SelectFilePath.Filter = "所有文件|*.*";
         if (SelectFilePath.ShowDialog() == DialogResult.Cancel)
         {
             return;
         }
         Path_textBox.Text    = SelectFilePath.FileName;
         Img_pictureBox.Image = UniversalMethod.GetImageByFileName(Path_textBox.Text);
         if (string.IsNullOrEmpty(Name_textBox.Text))
         {
             Name_textBox.Text = Path.GetFileNameWithoutExtension(Path_textBox.Text);
         }
         break;
     }
 }
Exemple #15
0
        /// <summary> 将文件拖拽到窗口后
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            System.Array ArrayTemp = ((System.Array)e.Data.GetData(DataFormats.FileDrop));
            if (ArrayTemp == null)
            {
                return;                   //不支持的格式直接返回
            }
            List <string> FilePathList = new List <string>();

            for (int i = 0; i < ArrayTemp.Length; i++)
            {
                FilePathList.Add(ArrayTemp.GetValue(i).ToString());
            }

            #region 获取父ID,使新添加的记录与当前选中节点处于同一级别

            string   StrParentId = "";
            TreeNode CurrentNode = ShortcutKey_otTreeView.SelectedNode;
            if (CurrentNode != null)
            {
                tShortCutKey CurrentEntity = tShortCutKeyDataSource.Where(T1 => T1.ShortCutKeyID == CurrentNode.Name).FirstOrDefault();
                if (CurrentEntity != null)
                {
                    StrParentId = CurrentEntity.ShortCutKeyID;
                }
            }
            #endregion 获取父ID,使新添加的记录与当前选中节点处于同一级别

            foreach (string PathItem in FilePathList)
            {
                string StrFileName = Path.GetFileNameWithoutExtension(PathItem);//获取快捷键名称

                int    KeyNum    = GetDefaultKey(StrParentId);
                string StrKeyNum = "";
                if (KeyNum != -1)
                {
                    StrKeyNum = KeyNum.ToString();                                                  //获取默认键编号
                }
                int FileType = 0;                                                                   //设置打开类型

                byte[] ImageByteArray = UniversalMethod.GetImageByFileName(PathItem).ToByteArray(); //获取文件图标

                #region 获取快捷方式真实路径
                string StrPath      = PathItem;
                string StrExtension = Path.GetExtension(PathItem);
                if (!string.IsNullOrEmpty(StrExtension))//文件
                {
                    if (StrExtension == ".lnk")
                    {
                        WshShell     ShellTemp        = new WshShell();
                        IWshShortcut IWshShortcutTemp = (IWshShortcut)ShellTemp.CreateShortcut(PathItem);
                        StrPath      = IWshShortcutTemp.TargetPath;
                        StrExtension = Path.GetExtension(StrPath);
                        if (string.IsNullOrEmpty(StrExtension))
                        {
                            FileType = 1;
                        }
                    }
                }
                else//文件夹
                {
                    FileType = 1;
                }
                Regex RegexTemp = new Regex(@"https{0,1}\:\/\/");
                if (RegexTemp.Match(StrPath).Success)//是否是网址
                {
                    FileType = 2;
                }
                #endregion 获取快捷方式真实路径

                #region 实例化AddData
                tShortCutKey AddData = new tShortCutKey()
                {
                    ShortCutKeyName = StrFileName,
                    ParentID        = StrParentId,
                    ShortCutKey     = StrKeyNum,
                    ShortCutKeyPath = StrPath,
                    ShortCutKeyType = (byte)FileType,
                    ShortCutKeyImg  = ImageByteArray
                };
                #endregion 实例化AddData
                string NewID = new ShortcutKeyManageService().AddShortCutKey(AddData);
                tShortCutKeyDataSource.Add(AddData);
            }
            InitKeyList();
        }
Exemple #16
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);
        }