Как я могу предотвратить кражу фокуса в Windows?
Быстрый поиск в Google решений для Focus Stealing в Windows выявляет две основные категории результатов:
- Люди, предлагающие неполные решения, включающие запись реестра ForegroundLockTimeout (или TweakUI, который, я считаю, просто изменяет вышеупомянутую запись реестра), что не очень эффективно.
- Непрекращающиеся полчища пользователей Windows жалуются на это.
Это особенно раздражает в двух распространенных сценариях:
Что-то запускает программу для всплывающего диалогового окна в фоновом режиме, когда полноэкранное приложение сфокусировано, в результате чего полноэкранное приложение минимизируется.
Окно крадет фокус, пока вы печатаете, крадя все ваши нажатия клавиш. Если вам случится нажать пробел, ввести или вызвать сочетание клавиш (например, Y для Да), это может привести к совершенно нежелательным последствиям.
Какие творческие решения могут быть применены для решения этой проблемы для одного или обоих из этих сценариев?
1 ответ
У меня есть одно предложение относительно того, как это можно решить, но я не могу реализовать его полностью, так как мне не хватает знаний.
Изменение фокуса между окнами должно вызываться вызывающей программой, вызывающей функцию Windows API, расположенную, скорее всего, в shell32 или user32. Некоторые программы, такие как Adobe Photoshop, звонят несколько раз (по крайней мере, дважды), чтобы заставить себя при запуске. Идея состоит в том, чтобы подключиться к этой функции API (если это возможно) и проверить, откуда происходит вызов. Если это не из файла explorer.exe (т. Е. Alt+Tabbing или щелчка по значку на панели задач), вызов должен быть заблокирован указанным хуком.