Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/ITachiLab/hotkey-detective

A small program for investigating stolen hotkeys under Windows 8+
https://github.com/ITachiLab/hotkey-detective

Last synced: 12 days ago
JSON representation

A small program for investigating stolen hotkeys under Windows 8+

Lists

README

        

= 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.