Как я могу зарегистрировать глобальную горячую клавишу, чтобы сказать CTRL+SHIFT+(LETTER) с помощью WPF и .NET 3.5?

Я не уверен, что вы имеете dot-net в виду под «глобальным» здесь, но c# вот оно (я предполагаю, что dot-net вы имеете в виду команду csharp на уровне приложения, например, Сохранить все, которая hotkeys может быть запущена из любого windows-applications места с помощью Ctrl + Shift + S.)

Вы c# найдете глобальное UIElement по вашему visual-c# выбору, например, окно верхнего windows-applications уровня, которое является c-sharp родителем всех элементов visual-c# управления, где вам нужна windows-application эта привязка. Из-за «всплывания» событий dotnet WPF события в дочерних элементах c# будут всплывать вплоть до windows-application корня дерева элементов управления.

Теперь windows-application сначала вам нужно

  1. чтобы связать комбинацию клавиш с командой, используя InputBinding, как это
  2. затем вы можете подключить команду к вашему обработчику (например, код, который вызывается SaveAll) через CommandBinding.

Для ключа windows-programming Windows вы используете правильный dot-net элемент перечисления Key, Key.LWin или windows-applications Key.RWin

public WindowMain()
{
   InitializeComponent();

   // Bind Key
   var ib = new InputBinding(
       MyAppCommands.SaveAll,
       new KeyGesture(Key.S, ModifierKeys.Shift | ModifierKeys.Control));
   this.InputBindings.Add(ib);

   // Bind handler
   var cb = new CommandBinding( MyAppCommands.SaveAll);
   cb.Executed += new ExecutedRoutedEventHandler( HandlerThatSavesEverthing );

   this.CommandBindings.Add (cb );
}

private void HandlerThatSavesEverthing (object obSender, ExecutedRoutedEventArgs e)
{
  // Do the Save All thing here.
}

c#

.net

wpf

windows

hotkeys

2022-10-31T14:06:35+00:00