Windows 快捷键归属检测工具,用来判断一个快捷键更可能属于哪个程序。
- C# / .NET 8
- WPF 桌面 UI
- Win32 API P/Invoke:全局键盘钩子、前台窗口识别、
RegisterHotKey探测 - ShellLink COM:扫描开始菜单和桌面
.lnk中配置的 Windows 快捷键
这个项目是 Windows 专用工具,核心能力依赖 Windows 窗口、键盘和 Shell API。相比 Electron、Web 或跨平台 UI,WPF + .NET 的部署体积、系统 API 调用成本和调试体验更适合这个场景。
Windows 不提供公开 API 来枚举所有 RegisterHotKey 注册项及其 owner,也不能可靠判断低级键盘钩子由哪个进程处理。因此本工具采用分层判断:
- 精确扫描桌面和开始菜单
.lnk文件中的 Hotkey 配置。 - 捕获快捷键按下前的前台窗口进程。
- 延迟读取按下后的前台窗口进程,用焦点变化推断目标程序。
- 尝试临时注册同一快捷键,判断是否存在系统级注册冲突。
结果会标明是“精确匹配”还是“推断/未知 owner”。
dotnet run --project src\DetectShortcutkeys.App\DetectShortcutkeys.App.csprojdotnet build DetectShortcutkeys.sln