Мне нужно определить, когда пользователь нажимает 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");
однако это не идеально.
Идеальным решением было бы, если бы мое окно не перехватывало нажатие клавиши в первую очередь, просто реагировало.