Я думаю, я понял это - ServiceWindowsHookEx требует цикл сообщений в потоке, который выполняет код - осторожно, он не имеет цикла сообщений!

ужно определить, когда пользователь нажимаетCtrl+V(независимо от фокуса окна - мое приложение, вероятно, будет свернуто), но я не должен останавливать фактическую операцию вставки.

Я попробовал несколько вещей: (Я успешно связываю нажатия клавиш с RegisterHotKey)

У меня есть:

protected override void WndProc(ref Message m)
{
  if (m.Msg == 0x312)
    hotKey();
  base.WndProc(ref m);
}

и я попробовал следующее:

void hotKey()
{
  SendKeys.SendWait("^v"); //just puts 'v' instead of clipboard contents
}

а также

void hotKey()
{
  SendKeys.SendWait(ClipBoard.GetText());
  /* This works, but since Ctrl is still down, it triggers
   * all the shortcut keys for the app, e.g. if the keyboard
   * contains 's' then instead of putting 's' in the app, it
   * calls Ctrl+S which makes the app think the user wants
   * to save.
   */
}

В настоящее время единственное рабочее решение, которое у меня есть, - это привязать к чему-то другому, например,Ctrl+B а затем позвонитеSendKeys.SendWait("^v"); Однако это не идеально.

Идеальным решением было бы, если бы мое окно не перехватывало нажатие клавиши, а просто реагировало.

Ответы на вопрос(1)

Ваш ответ на вопрос