Узнайте, в каком процессе зарегистрирована глобальная горячая клавиша? (Windows API)

Насколько мне удалось выяснить, Windows не предлагает функцию API, позволяющую определить, какое приложение зарегистрировало глобальную горячую клавишу (через RegisterHotkey). Я могу только узнать, что горячая клавиша зарегистрирована, если RegisterHotkey возвращает false, но не тот, кто «владеет» горячей клавишей.

При отсутствии прямого API, может быть окольный путь? Windows поддерживает дескриптор, связанный с каждой зарегистрированной горячей клавишей - это немного сводит с ума, что не должно быть никакого способа получить эту информацию.

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

В этом нет ничего критичного, но я часто видел запросы на такую функциональность, и я сам стал жертвой приложений, которые регистрируют горячие клавиши, даже не раскрывая их где-либо в пользовательском интерфейсе или документах.

(Работая в Delphi, и не более чем ученик в WinAPI, пожалуйста, будьте добры.)

Ответы на вопрос(9)

Ваш ответ на вопрос