Раймонд рассказал о, как программы могут получить/украсть "переднюю любовь", используя RegisterHotkey
, который при вызове передаст переднюю часть ваше приложение.
Попытки сделать это вручную терпят неудачу (например, используя SetForegroundWindow
, SwitchToWindow
и т.д.), потому что приложения не могут украсть фокус у пользователя (так, чтобы нажатия клавиш не попадали в неправильное место).
Беда в том, что сегодня я заметил что-то странное:
-
Я пытаюсь безопасно удалить внешний диск.
-
Существует пауза в 7 секунд.
-
Во время паузы я активно печатаю внутри окна.
-
Внезапно окно с сообщениями перечеркивает переднюю часть моего приложения, и вместо этого я печатаю текст в поле сообщения.
Понятно, что это не использует механизм горячих клавиш - и все же Windows смогла украсть фокус из моего приложения.
Я действительно сомневаюсь, что есть что-то вроде "бэкдора", используемого только для этой конкретной цели (хотя, пожалуйста, поправьте меня, если я ошибаюсь), поэтому, предполагая, что это не так, должен быть способ сделайте это правильно, не используя механизм горячих клавиш.
Итак, вопрос в том, как это достигается?
Примечание:
Ганс отметил, что "бэкдор" -AttachInputThread
, но я не совсем уверен, что здесь происходит, тем более что Раймонд говорит, что метод может вызвать зависания. Идеи?