• Stars
    star
    370
  • Rank 115,405 (Top 3 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created about 4 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A small program for investigating stolen hotkeys under Windows 8+

Hotkey Detective

Hotkey Detective is a small utility for investigating what application holds a global hotkey under Windows 8 and later.

The utility has been created as a matter of need, because I couldn’t find any working and simple program that would just show me what process has stolen my hotkey, and prevents me from "zażółcania gęślej jaźni".

Quick guide

Hotkey Detective is shipped as a ZIP archive and can be downloaded from the "Releases" page.

Every archive contains two directories: x64 and x86. For x64 Windows, you will of course run the executable from the x64 directory but if it didn’t find the hotkey, then try x86 version. For x86 Windows you don’t have much choices, you just run the x86 version.

Running steps

  1. Enter the appropriate (x64 or x86) directory.

  2. Run HotkeyDetective.exe as administrator.

  3. If the window pops up without errors, press the stolen hotkey and Hotkey Detective will show you a path to the guilty process.

Some theory for curious

The problem

When you Google "show hotkey process", you’ll surely get many results that propose using Hotkey Explorer to solve your problem. This is a powerful tool, I used this many times, but on Windows 7. Apparently Hotkey Explorer doesn’t work very well on Windows 8 and later.

The core of the problem is probably the way how Hotkey Explorer finds out what program holds which hotkey. It essentially tries every possible combination and checks what program will react. Apparently Windows 7 had a possibility to inhibit the keystrokes, but it’s no longer valid for Windows 8+, and all keystrokes are sent to the system and other programs. Can you imagine the effect?

The solution

Hotkey Detective uses a similar approach, it hooks to every process and waits for it to receive a hotkey command. The biggest difference is that Hotkey Detective doesn’t force trying all hotkeys. You must press the stolen hotkey and Hotkey Detective will show you what process received the command.

FAQ

I don’t see any results in the table.

Try running both versions (x86 and x64) when you are using x64 Windows. If you are unsure about your system’s platform, still try both of them, x64 won’t run on x86 platform anyway.

Remember to always run it with administrator privileges.

I did all of the above, and I still don’t see any results.

Make sure the hotkey you are trying is truly global. By "truly" I mean it’s registered with the system and can be triggered even when the owning application is in the background.

A good example is Ctrl + T in browsers, this works only when the browser is in the foreground. Hotkey Detective will not recognize this keystroke as it’s not registered with the system, only the browser knows about this combination.

Why can’t I remove Hotkey Detective after using?

The system loads the DLL shipped with Hotkey Detective into every process in order to spy on hotkeys. When Hotkey Detective is closed, the DLL is still present in the processes, and you simply can’t remove something the system is using.

Unloading the DLL from foreign processes is tricky and I’m currently working on it. For the time being, as a workaround I can only suggest restarting your system.

Changelog

1.1.0

Added a warning message when trying to run Hotkey Detective as a non-admin user. This will greatly improve user experience, especially among users not reading readmes (I’m not reading them too, though).

1.0.0

The first major that brings up a basic but friendly UI in place of the scary console.

0.1.0

The very first version of Hotkey Detective, a simple console application.