From 4fb997c8d0c311c6a4d3259fe4e835d457f1d344 Mon Sep 17 00:00:00 2001 From: DismissedLight <1686188646@qq.com> Date: Sat, 23 Sep 2023 15:11:08 +0800 Subject: [PATCH] fix non-elevated auto click --- .../Core/Windowing/HotKey/HotKeyController.cs | 16 ++++++++++++++-- .../Core/Windowing/HotKey/IHotKeyController.cs | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs index 2e084799..30da56c5 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs @@ -16,22 +16,34 @@ internal sealed class HotKeyController : IHotKeyController private readonly object locker = new(); private readonly WaitCallback runMouseClickRepeatForever; private readonly HotKeyOptions hotKeyOptions; + private readonly RuntimeOptions runtimeOptions; private volatile CancellationTokenSource? cancellationTokenSource; public HotKeyController(IServiceProvider serviceProvider) { hotKeyOptions = serviceProvider.GetRequiredService(); + runtimeOptions = serviceProvider.GetRequiredService(); runMouseClickRepeatForever = MouseClickRepeatForever; } public bool Register(in HWND hwnd) { - return RegisterHotKey(hwnd, DefaultId, default, (uint)VIRTUAL_KEY.VK_F8); + if (runtimeOptions.IsElevated) + { + return RegisterHotKey(hwnd, DefaultId, default, (uint)VIRTUAL_KEY.VK_F8); + } + + return false; } public bool Unregister(in HWND hwnd) { - return UnregisterHotKey(hwnd, DefaultId); + if (runtimeOptions.IsElevated) + { + return UnregisterHotKey(hwnd, DefaultId); + } + + return false; } public void OnHotKeyPressed(in HotKeyParameter parameter) diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/IHotKeyController.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/IHotKeyController.cs index 693fb921..5e140c06 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/IHotKeyController.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/IHotKeyController.cs @@ -8,6 +8,7 @@ namespace Snap.Hutao.Core.Windowing.HotKey; internal interface IHotKeyController { void OnHotKeyPressed(in HotKeyParameter parameter); + bool Register(in HWND hwnd); bool Unregister(in HWND hwnd);