private void PerformCustomAction(CustomAction.Actions action, String parameter)
        {
            switch (action)
            {
            case CustomAction.Actions.RunExternalProgram:
                Process.Start(parameter);
                break;

            case CustomAction.Actions.Hotkey:
                if (!parameter.Contains(";"))
                {
                    return;
                }

                InputSimulator sim = new InputSimulator();
                foreach (var keycode in parameter.Split(';')[1].Split(','))
                {
                    sim.Keyboard.KeyDown((VirtualKeyCode)int.Parse(keycode));
                }
                foreach (var keycode in parameter.Split(';')[1].Split(','))
                {
                    sim.Keyboard.KeyUp((VirtualKeyCode)int.Parse(keycode));
                }
                break;
            }
        }
Exemple #2
0
        private void Menu_AddItem(ContextMenu c, CustomAction.Actions action)
        {
            MenuItem m = new MenuItem();

            m.Header = action.GetDescription();
            m.Click += delegate
            {
                if (action == CustomAction.Actions.RunExternalProgram)
                {
                    OpenFileDialog dlg = new OpenFileDialog();
                    dlg.Title       = Loc.GetString("cact_external_app_dialog_title");
                    dlg.Multiselect = false;
                    dlg.Filter      = "Executable Files|*.exe;*.bat;*.cmd;*.pif|" +
                                      "All Files (*.*)|*.*";

                    bool?result = dlg.ShowDialog();
                    if (result == true)
                    {
                        _action = new CustomAction(action, dlg.FileName);
                    }
                }
                else if (action == CustomAction.Actions.Hotkey)
                {
                    HotkeyRecorder dlg    = new HotkeyRecorder();
                    bool?          result = dlg.ShowDialog();
                    if (result == true)
                    {
                        _action = new CustomAction(action, dlg.HotkeyString + ";" + String.Join(",", dlg.HotKeysVirtualCodeRaw));
                    }
                }
                else
                {
                    _action = new CustomAction(action);
                }

                if (_action != null)
                {
                    Action.TextDetail = _action.ToLongString();
                }
            };
            m.Style = (Style)FindResource("MenuItemStyle");
            c.Items.Add(m);
        }
        private void PerformCustomAction(CustomAction.Actions action, String parameter)
        {
            switch (action)
            {
            case CustomAction.Actions.RunExternalProgram:
                try
                {
                    Process.Start(parameter);
                }
                catch (FileNotFoundException ex)
                {
                    MessageBox.Show($"Failed to execute custom long-press action (launch external app).\nFile not found: '{ex.FileName}'",
                                    "Galaxy Buds Manager", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                catch (Win32Exception ex)
                {
                    MessageBox.Show($"Failed to execute custom long-press action (launch external app). Detailed information:\n{ex.Message}",
                                    "Galaxy Buds Manager", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                break;

            case CustomAction.Actions.Hotkey:
                if (!parameter.Contains(";"))
                {
                    return;
                }

                InputSimulator sim = new InputSimulator();
                foreach (var keycode in parameter.Split(';')[1].Split(','))
                {
                    sim.Keyboard.KeyDown((VirtualKeyCode)int.Parse(keycode));
                }
                foreach (var keycode in parameter.Split(';')[1].Split(','))
                {
                    sim.Keyboard.KeyUp((VirtualKeyCode)int.Parse(keycode));
                }
                break;
            }
        }