Как определить, какой процесс принадлежит горячей клавише в Windows?

Учитывая горячую клавишу, как я могу найти, какая программа владеет ею?

3 Solutions collect form web for “Как определить, какой процесс принадлежит горячей клавише в Windows?”

Внимание : если вы используете Win 8 или более позднюю версию, не используйте эту утилиту, так как это создаст некоторые проблемы – см. Комментарии.

Если вы используете Windows раньше Windows 8, то Windows Hotkey Explorer , вероятно, вы хотите. Это также упоминается в вопросе StackOverflow: узнать, какой процесс зарегистрировал глобальная горячая клавиша? (Windows API) .

На этот вопрос, вероятно, ответили «Переполнение стека» в этом потоке:

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

Вот ответ Паука :

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

Я нашел этот пример создания клавиатурного крючка (в Delphi), написанного в 1998 году, но скомпилированного в Delphi 2007 с несколькими настройками.

Это DLL с вызовом SetWindowsHookEx который проходит через функцию обратного вызова, которая затем может перехватывать SetWindowsHookEx клавиш: в этом случае он играет с ними для удовольствия, меняя левый курсор вправо и т. Д. Простое приложение затем вызывает DLL и отчеты Вернуть его результаты на основе события TTimer. Если вам интересно, я могу опубликовать код на основе Delphi 2007.

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

Другие приложения пытались определить горячие клавиши, просмотрев их ярлыки, так как они могут содержать клавишу быстрого доступа, что является еще одним термином для горячей клавиши. Однако большинство приложений не склонны устанавливать это свойство, чтобы он мог не возвращать много. Если вас интересует этот маршрут, Delphi имеет доступ к интерфейсу IShellLink COM, который вы можете использовать для загрузки ярлыка и получения его горячей клавиши:

 uses ShlObj, ComObj, ShellAPI, ActiveX, CommCtrl; procedure GetShellLinkHotKey; var LinkFile : WideString; SL: IShellLink; PF: IPersistFile; HotKey : Word; HotKeyMod: Byte; HotKeyText : string; begin LinkFile := 'C:\Temp\Temp.lnk'; OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, SL)); // The IShellLink implementer must also support the IPersistFile // interface. Get an interface pointer to it. PF := SL as IPersistFile; // Load file into IPersistFile object OleCheck(PF.Load(PWideChar(LinkFile), STGM_READ)); // Resolve the link by calling the Resolve interface function. OleCheck(SL.Resolve(0, SLR_ANY_MATCH or SLR_NO_UI)); // Get hotkey info OleCheck(SL.GetHotKey(HotKey)); // Extract the HotKey and Modifier properties. HotKeyText := ''; HotKeyMod := Hi(HotKey); if (HotKeyMod and HOTKEYF_ALT) = HOTKEYF_ALT then HotKeyText := 'ALT+'; if (HotKeyMod and HOTKEYF_CONTROL) = HOTKEYF_CONTROL then HotKeyText := HotKeyText + 'CTRL+'; if (HotKeyMod and HOTKEYF_SHIFT) = HOTKEYF_SHIFT then HotKeyText := HotKeyText + 'SHIFT+'; if (HotKeyMod and HOTKEYF_EXT) = HOTKEYF_EXT then HotKeyText := HotKeyText + 'Extended+'; HotKeyText := HotKeyText + Char(Lo(HotKey)); if (HotKeyText = '') or (HotKeyText = #0) then HotKeyText := 'None'; ShowMessage('Shortcut Key - ' + HotKeyText); end; 

Если у вас есть доступ к Safari Books Online , есть хороший раздел о работе с ярлыками / ссылками на оболочку в Руководстве разработчика Borland Delphi 6 от Steve Teixeira и Xavier Pacheco. Мой пример выше – это версия, отвязанная оттуда, и этот сайт .

Надеюсь, это поможет!

Это работает для меня в Win10 (и, возможно, во всех других даже смутно недавних версиях Windows) … также скопировано здесь из https://stackoverflow.com/a/43645062/995048, так как эта страница, кажется, сначала появляется в результатах поиска :

Одним из возможных способов является использование инструмента Visual Studio Spy ++ .

Попробуйте:

  1. Запустите инструмент (для меня он находится в C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\spyxx_amd64.exe )
  2. В строке меню выберите « Шпион» -> « Сообщения журнала» … (или нажмите Ctrl + M )
  3. Проверка всех окон в системе в дополнительном кадре Windows
  4. Переключиться на вкладку « Сообщения »
  5. Нажмите кнопку Очистить все
  6. Выберите WM_HOTKEY в WM_HOTKEY или выберите « Клавиатура» в группах сообщений (если у вас все в порядке с большим потенциальным шумом)
  7. Нажмите кнопку OK
  8. Нажмите горячую клавишу (например, Win + R )
  9. Выберите строку WM_HOTKEY в окне « Сообщения (все окна)» , щелкните правой кнопкой мыши и выберите « Свойства …» в контекстном меню
  10. В диалоговом окне « Свойства сообщения » нажмите ссылку « Ручка окна» (это будет дескриптор окна, получившего сообщение)
  11. Нажмите кнопку « Синхронизировать» в диалоговом окне «Свойства окна». Это покажет окно в главном окне дерева Spy ++.
  12. В диалоговом окне «Свойства окна» выберите вкладку « Процесс »
  13. Нажмите ссылку « Идентификатор процесса» . Это покажет вам процесс (в моем случае Win + R : EXPLORER )
  • Как отключить Control-W в Windows XP?
  • Как настроить быстрые клавиши в Windows XP?
  • Что такое сочетание клавиш для минимизации обычного окна?
  • Interesting Posts

    Переустановка окон в многодисковой системе, что делать с дисководом?

    Как отключить (подписи) проверку в реальном времени и мониторинг поведения в поведении в Windows Defender?

    Планирование повторяющейся задачи в Android

    Как подключиться к файлу MS Access (mdb) с помощью C #?

    Как настроить намерение совместного использования в Android?

    Запуск сразу нескольких профилей Firefox?

    Ошибка шрифта Helvetica Neue – помеченные символы в Google Chrome для Mac

    WampServer и перенаправление портов для внешнего доступа

    Как кэшировать учетные данные в Windows

    Строительство TFS 2013 .NET 4.6 / C # 6.0

    Медиа-запросы: как настроить таргетинг на настольные системы, highcharts и мобильные устройства?

    Можно ли зашифровать домашнюю папку на окнах 7?

    Как отключить приложения для доступа к Windows 7?

    Энергоэффективный CRT, LCD, LED?

    Простой способ сравнения процессоров

    Давайте будем гением компьютера.