Nano Hash - криптовалюты, майнинг, программирование

Outlook крадет нажатие клавиши пробела из WPF, принадлежащего надстройке

У меня есть надстройка 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 возможных решения проблемы:

  1. Каждый раз, когда активируется окно Addin WPF, чтобы заставить Outlook Explorer терять фокус с текущего отображаемого сообщения электронной почты на правой главной панели. Однако я еще не нашел способа добиться этого.

  2. Перехватите пробел и активируйте предопределенный метод javascript для вставки пробела. Однако это сложно, потому что в тех случаях, когда пробел работает правильно, мой надстройка будет получать 2 пробела - один при простом нажатии клавиши пробела, а второй - путем инъекции.

Есть идеи, как решить такую ​​проблему?

Ваше здоровье


Ответы:


1

Откройте окно WPF в новом потоке. Таким образом, все нажатия клавиш, такие как ctrl-c ctrl-v ctrl-a, вводят вкладку удаления и пробел.

Thread newWindowThread = new Thread(new ThreadStart(() =>
{
    MyWindow window = new MyWindow();
    window.Show();
    System.Windows.Threading.Dispatcher.Run();
}));
newWindowThread.SetApartmentState(ApartmentState.STA);
newWindowThread.IsBackground = true;
newWindowThread.Start();
25.05.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..