예제 #1
0
        //открыть новые скрипты
        private void OpenScripts_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog()
            {
                DefaultExt = ".dll",
                Filter     = "DLL Files (.dll)|*.dll"
            };                          //диалог открытия файла

            if (ofd.ShowDialog().Value) //если открыли
            {
                LoadFuncsRunScripts.LoadScripts(ofd.FileName);
            }
        }
예제 #2
0
파일: Hook.cs 프로젝트: Electrominch/Binder
        static HashSet <Key> hs = new HashSet <Key>();               //словарь нажатых клавиш
        static void KeyDown(object sender, GlobalHook.MyEventArgs e) //любая кнопка нажата
        {
            if (!hs.Contains(e.e.Key))                               //если такая кнопка не нажата, то записываем её и продолжаем
            {
                hs.Add(e.e.Key);
            }
            else//если кнопка уже была нажата - выходим
            {
                return;
            }
            var bnds = MainWindow.Binds.Where(b => b.Keys.Contains(e.e.Key == Key.System?e.e.SystemKey:e.e.Key)); //ищем бинды, где кнопка соответствует

            foreach (var b in bnds)                                                                               //береьираем эти бинды
            {
                //если нажаты все необходимые кнопки
                if (b.Enable && b.Keys.All(k => hs.Contains(k)))
                {
                    try
                    {
                        string scr = "";
                        if (b.IsToggle)                                        //Если это бинд переключатель
                        {
                            scr         = b.TogglePos ? b.Script1 : b.Script2; //выбираем скрипт
                            b.TogglePos = !b.TogglePos;                        //переключаем
                            b.UpdateBacks();                                   //обновляем задний фон для его скриптов
                        }
                        else//обычный бинд
                        {
                            scr = b.Script1;                            //просто берём и выполняем
                        }
                        int code = LoadFuncsRunScripts.ExecScript(scr); //выполняем скрипт
                        switch (code)
                        {
                        case 1:    //1 - эксклюзивный бинд
                            e.Handled = true;
                            break;
                        }
                    }
                    catch (Exception ex)//логгер ошибок
                    {
                        string crashLog = string.Join(null, Enumerable.Repeat(Environment.NewLine, 5));
                        crashLog += DateTime.Now.ToString() + Environment.NewLine + ex.ToString();
                        File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Binder\crashLogs.txt", crashLog);
                        MessageBox.Show("Во время выполнения произошла ошибка, откройте файл лога для большей информации", "Ошибка");
                    }
                }
            }
        }
예제 #3
0
        //тут все ссылочные переменные, на которые надо поставить игнор
        //public Border bind = null;//основной элемент бинда
        //public Canvas can = null;//канвас, где все элементы бинда
        //public DockPanel NameDock = null;//док, где имя и кнопка редактирования имени
        //public Label nameLab = null;//лейбел имени бинда
        //public Label script1Lab = null;//лейбел для скрипта 1 бинда
        //public Label script2Lab = null;//лейбел для скрипта 2 бинда
        //public Button EnableButton = null;//кнопка включения/выключения бинда
        //public CheckBox IsToggleCheck = null;//комбобокс с выбором модификатора бинда
        //public DockPanel ChooseBindDock = null;//док, для хранения бинда
        //public TextBlock keyText = null;//текстблок для кнопки бинда
        //public ComboBox comboModifier1 = null;//комбобокс с выбором модификатора бинда1
        //public ComboBox comboModifier2 = null;//комбобокс с выбором модификатора бинда2

        public MainWindow()//конструктор этого окна
        {
            //подготавливаем сериализер для биндов
            {
                var overrides = new XmlAttributeOverrides();
                var ignore    = new XmlAttributes {
                    XmlIgnore = true
                };
                overrides.Add <Bind>(m => m.bind, ignore);
                overrides.Add <Bind>(m => m.can, ignore);
                overrides.Add <Bind>(m => m.ChooseBindDock, ignore);
                overrides.Add <Bind>(m => m.comboModifier1, ignore);
                overrides.Add <Bind>(m => m.comboModifier2, ignore);
                overrides.Add <Bind>(m => m.EnableButton, ignore);
                overrides.Add <Bind>(m => m.IsToggleCheck, ignore);
                overrides.Add <Bind>(m => m.keyText, ignore);
                overrides.Add <Bind>(m => m.NameDock, ignore);
                overrides.Add <Bind>(m => m.nameLab, ignore);
                overrides.Add <Bind>(m => m.script1Lab, ignore);
                overrides.Add <Bind>(m => m.script2Lab, ignore);
                Type t = typeof(Bind[]);
                xsBinds = new XmlSerializer(t, overrides);
            }

            if (Application.ResourceAssembly.Location.Split('\\').Last() != "Binder.exe")//возвращаем наше имя
            {
                File.Move(Application.ResourceAssembly.Location, Application.ResourceAssembly.Location.Replace(Application.ResourceAssembly.Location.Split('\\').Last(), "Binder.exe"));
            }
            if (Process.GetProcessesByName("Binder").Length > 1)
            {
                Application.Current.Shutdown();
            }


            InitializeComponent();
            OpenOrCreateSets();//загружаем настройки
            //применяем настройки
            if (sets.haveDefaultBindsPath)
            {
                try
                { OpenInPath(sets.defaultBindsPath); }
                catch//если не удалось открыть или найти файл сохранки то убираем это
                {
                    MessageBox.Show("Файл " + sets.defaultBindsPath + " не найден!");
                    sets.defaultBindsPath     = "";
                    sets.haveDefaultBindsPath = false;
                }
            }
            SettingClass.UnRegisterAutoRun();
            if (sets.autoRun)
            {
                SettingClass.RegisterAutoRun();
            }

            Hook.SetHook();//запускаем хукер

            ShowWindow();
            Show();
            if (sets.AutoRunHided)
            {
                HideWindow();
            }
            LoadFuncsRunScripts.LoadScripts();
            main = this;
            MouseHook.MouseMove += MousePos;//ставим обработчик
            //MouseHook.LocalHook = false;
        }