H.Hooks
1.7.0
dotnet add package H.Hooks --version 1.7.0
NuGet\Install-Package H.Hooks -Version 1.7.0
<PackageReference Include="H.Hooks" Version="1.7.0" />
paket add H.Hooks --version 1.7.0
#r "nuget: H.Hooks, 1.7.0"
// Install H.Hooks as a Cake Addin #addin nuget:?package=H.Hooks&version=1.7.0 // Install H.Hooks as a Cake Tool #tool nuget:?package=H.Hooks&version=1.7.0
H.Hooks
It uses Win32 kernel32.dll
and user32.dll
calls inside.
Contains LowLevelKeyboardHook and LowLevelMouseHook.
Features:
- Global key handling and cancellation
- Allows handling combination like 1 + 2 + 3
- Only one Up event per combination
- Handle special buttons like Mouse.XButton
- Optimized, runs hooks in a separate thread. Does not cause freezes when debugging the rest of the code.
- By default, it delivers events from a ThreadPool instead of a hook thread, which makes it possible to do any action in event handlers without affecting system performance.
- Supports Trimming/NativeAOT, nullability, and other modern features.
Nuget
Install-Package H.Hooks
Usage
using var keyboardHook = new LowLevelKeyboardHook();
keyboardHook.Up += (_, args) => Console.WriteLine($"{nameof(keyboardHook.Up)}: {args}");
keyboardHook.Down += (_, args) => Console.WriteLine($"{nameof(keyboardHook.Down)}: {args}");
keyboardHook.Start();
using var mouseHook = new LowLevelMouseHook();
mouseHook.Down += (_, args) => Console.WriteLine($"{nameof(mouseHook.Down)}: {args}");
mouseHook.Move += (_, args) => Console.WriteLine($"{nameof(mouseHook.Move)}: {args}");
mouseHook.Start();
// Check keys
if (args.Keys.Are(Key.Control, Key.Escape)) {
// Exit?
}
Interception of input and cancellation
Allows you to intercept input for other applications and cancel events (via args.IsHandled = true
).
Do not enable this unless you need it.
When enabled, overrides the automatic dispatch of events to the ThreadPool
and may cause performance issues with any slow handlers. In this case,
you need to use ThreadPool.QueueUserWorkItem(WaitCallback)
when handling events (after set up args.IsHandled = true
).
hook.Handling = true;
hook.Up += (_, args) => args.IsHandled = true;
Advanced usage
// Enables Move events.
mouseHook.GenerateMouseMoveEvents = true;
// Adds keyboard keys. Allows getting combinations like Shift + LeftMouse.
mouseHook.AddKeyboardKeys = true;
// Sends multiple events while key pressed.
keyboardHook.OneUpEvent = false;
// Allows handle modifier keys.
keyboardHook.HandleModifierKeys = true;
// Allows common key combinations, like 1 + 2 + 3.
hook.IsExtendedMode = true;
// Events will contains separate Left/Right keys.
hook.IsLeftRightGranularity = true;
// Uses User32.GetKeyboardState instead User32.GetKeyState.
// Disable this if any problem.
hook.UseKeyboardState = false;
// Adds Key.Caps to each event if CapsLock is toggled.
hook.IsCapsLock = false;
Contacts
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- System.Memory (>= 4.6.0)
-
.NETStandard 2.0
- Microsoft.Win32.Registry (>= 5.0.0)
- System.Memory (>= 4.6.0)
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages (7)
Showing the top 5 NuGet packages that depend on H.Hooks:
Package | Downloads |
---|---|
H.Services.HookService
Allows you to bind commands to system-wide hotkeys. |
|
H.Runners.SelectRunner
Allows you to select a portion of the screen. |
|
FrameworkOfAliveApplication.StandardBase.Utility
Utility library |
|
Frank.Libraries.Machine
Not very useful at the moment, but is intended to become a helpful tool for accessing device information |
|
Responsive
Package Description |
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on H.Hooks:
Repository | Stars |
---|---|
rocksdanister/lively
Free and open-source software that allows users to set animated desktop wallpapers and screensavers powered by WinUI 3.
|
|
w4po/ExplorerTabUtility
Explorer Tab Utility: Force new windows to tabs. Streamline navigation!
|
Version | Downloads | Last updated |
---|---|---|
1.7.0 | 138 | 12/10/2024 |
1.6.0 | 14,471 | 8/1/2022 |
1.4.21 | 1,158 | 4/1/2022 |
1.4.20 | 1,701 | 3/27/2022 |
1.4.19 | 520 | 3/17/2022 |
1.4.18 | 743 | 2/15/2022 |
1.4.17 | 464 | 2/15/2022 |
1.4.14 | 1,226 | 10/23/2021 |
1.4.13 | 423 | 10/21/2021 |
1.4.12 | 365 | 10/21/2021 |
1.4.9 | 1,319 | 7/9/2021 |
1.4.8 | 447 | 7/9/2021 |
1.4.7 | 389 | 7/8/2021 |
1.4.6 | 573 | 6/14/2021 |
1.4.5 | 474 | 6/13/2021 |
1.4.3 | 389 | 6/13/2021 |
1.3.2 | 2,392 | 1/22/2021 |
1.3.1 | 602 | 1/21/2021 |
1.3.0 | 427 | 1/21/2021 |
1.2.4 | 444 | 1/21/2021 |
1.2.3 | 1,050 | 1/20/2021 |
1.2.2 | 2,584 | 1/19/2021 |
1.2.1 | 1,905 | 1/18/2021 |
1.2.0 | 378 | 1/16/2021 |
1.1.0 | 419 | 1/15/2021 |
1.0.1 | 9,232 | 12/15/2020 |
1.0.0 | 450 | 12/15/2020 |