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; } }
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; } }