У меня есть надстройка Outlook (Office 2013), основная роль которой заключается в открытии окна WPF, содержащего WebBrowser, в которое встроено конкретное бизнес-веб-приложение. Мне уже приходилось решать несколько проблем с WPF WebBrowser, не получавшим определенные нажатия клавиш, такие как ввод, удаление, ctrl + c, ctrl-v и т. Д. Это, однако, было успешно обработано подходом, описанным здесь: https://blogs.msdn.microsoft.com/vsod/2010/04/08/using-shortcut-keys-to-call-a-function-in-an-office-add-in/.
Эти проблемы были, по крайней мере, последовательными. Последний вопрос, с которым я столкнулся, связан с клавишей пробела. В целом пробел обрабатывается аналогично другим буквенно-цифровым клавишам и не требует перехвата. Однако это не так во всех случаях. Всякий раз, когда пользователь фокусирует Outlook на конкретном электронном письме (под фокусировкой я подразумеваю не выбор электронной почты в панели навигации, а скорее щелчок по тексту электронного письма на правой главной панели), Outlook использует пробел в качестве ярлыка навигации. Таким образом, пользователь может просматривать содержимое электронной почты и переключаться на следующие электронные письма.
Проблема возникает, когда пользователь, сфокусировавшись на правой панели, открывает мое окно Addin WPF и использует поле HTML для предоставления текста, содержащего пробелы. В этом состоянии Outlook по-прежнему перемещается в проводнике Outlook внизу, «крадет» нажатие клавиши пробела, даже если активно окно WPF, а не Outlook Explorer. Это означает, что веб-приложение никогда не получает пространство. Только когда Пользователь «теряет фокус» из текущего электронного письма, даже если щелкнуть текущее отображаемое электронное письмо в панели навигации, тогда Outlook, кажется, освобождает право собственности на пробел, и он снова работает, как ожидалось.
Я вижу 2 возможных решения проблемы:
Каждый раз, когда активируется окно Addin WPF, чтобы заставить Outlook Explorer терять фокус с текущего отображаемого сообщения электронной почты на правой главной панели. Однако я еще не нашел способа добиться этого.
Перехватите пробел и активируйте предопределенный метод javascript для вставки пробела. Однако это сложно, потому что в тех случаях, когда пробел работает правильно, мой надстройка будет получать 2 пробела - один при простом нажатии клавиши пробела, а второй - путем инъекции.
Есть идеи, как решить такую проблему?
Ваше здоровье