Я могу придумать три способа сделать это с помощью стандартного API:
При первом подходе вы получите в возвращаемом значении, было ли другое приложение уже зарегистрировало ту же самую горячую клавишу (или это сочетание клавиш используется горячей клавишей, или Explorer.exe зарегистрировало горячую клавишу, потому что это Win + E или win + R) ). Вы не можете получить название приложения таким образом.
Использование Windows Hooks или состояний асинхронных клавиш для «горячих клавиш»: я не думаю, что там можно обнаружить горячие клавиши, поскольку вы можете использовать горячие клавиши в контексте (например, заменить «t» на «irst», если последние четыре нажатия клавиш были "фрис") именно так. Вы можете ввести горячую клавишу, используя keybd_event (со сфокусированным окном), и проверить, проходит ли событие; с другой стороны, некоторые случаи «горячих клавиш», которые реализуются через ловушки, не используют нажатие клавиши, поэтому оно все равно будет проходить.
Подход, который я бы использовал: сначала убедитесь, что для ввода ярлыка вам необходимо ввести именно этот ярлык в поле ярлыка (в случае неудачи пользователь увидит, какое приложение его использует). Затем используйте RegisterHotkey, чтобы вы заметили (в будущих сеансах), что другое «хорошо себя зарекомендовавшее себя» приложение попыталось украсть этот ярлык у вас.