Skip to content

Commit 80484c9

Browse files
committed
程序锁定时操作电脑显示解锁提示
1 parent 3a1369a commit 80484c9

File tree

7 files changed

+99
-2
lines changed

7 files changed

+99
-2
lines changed

src/ComputerLock/Components/Settings/LockSettings.razor

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,17 @@
4848
Color="Color.Primary"
4949
Style="max-width: fit-content;" />
5050

51+
<div class="d-flex flex-column">
52+
<MudCheckBox @bind-Value="@(AppSettings.LockTips)"
53+
@bind-Value:after="SaveSettings"
54+
Label="@(Lang["LockTips"])"
55+
Color="Color.Primary"
56+
Style="max-width: fit-content;" />
57+
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="ml-12">
58+
@(Lang["LockTipsRemark"])
59+
</MudText>
60+
</div>
61+
5162
<MudSelect T="LockStatusDisplay"
5263
Class="mt-4"
5364
Dense="true"

src/ComputerLock/Configuration/AppSettings.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ public void Initialize(HotkeyTools hotkeyTools)
4747
/// </summary>
4848
public bool LockAnimation { get; set; } = true;
4949

50+
/// <summary>
51+
/// 锁定提示
52+
/// </summary>
53+
public bool LockTips { get; set; } = false;
54+
5055
/// <summary>
5156
/// 程序启动时锁定
5257
/// </summary>

src/ComputerLock/Resources/Lang.Designer.cs

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ComputerLock/Resources/Lang.en.resx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,4 +378,13 @@
378378
<data name="LockStatusDisplayDotTopRight" xml:space="preserve">
379379
<value>Top-right Dot</value>
380380
</data>
381+
<data name="LockTipsValue" xml:space="preserve">
382+
<value>Unlock required</value>
383+
</data>
384+
<data name="LockTips" xml:space="preserve">
385+
<value>Prompt tips on input when locked</value>
386+
</data>
387+
<data name="LockTipsRemark" xml:space="preserve">
388+
<value>No prompt on keyboard when using shortcut unlock</value>
389+
</data>
381390
</root>

src/ComputerLock/Resources/Lang.resx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,4 +396,13 @@
396396
<data name="LockStatusDisplayDotTopRight" xml:space="preserve">
397397
<value />
398398
</data>
399+
<data name="LockTipsValue" xml:space="preserve">
400+
<value />
401+
</data>
402+
<data name="LockTips" xml:space="preserve">
403+
<value />
404+
</data>
405+
<data name="LockTipsRemark" xml:space="preserve">
406+
<value />
407+
</data>
399408
</root>

src/ComputerLock/Resources/Lang.zh.resx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,4 +375,13 @@
375375
<data name="LockStatusDisplayDotTopRight" xml:space="preserve">
376376
<value>右上角圆点</value>
377377
</data>
378+
<data name="LockTipsValue" xml:space="preserve">
379+
<value>请先解锁</value>
380+
</data>
381+
<data name="LockTips" xml:space="preserve">
382+
<value>程序锁定时操作电脑显示解锁提示</value>
383+
</data>
384+
<data name="LockTipsRemark" xml:space="preserve">
385+
<value>快捷键解锁时,按下键盘不会提示</value>
386+
</data>
378387
</root>

src/ComputerLock/Services/GlobalLockService.cs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@ internal class GlobalLockService : IGlobalLockService
2020
private readonly IServiceProvider _serviceProvider;
2121
private readonly IWindowsMessageBox _messageBox;
2222
private readonly IStringLocalizer<Lang> _lang;
23+
private readonly PopupService _popupService;
2324
public bool IsLocked { get; private set; }
2425
private bool _isWindowsLocked;
2526
private CancellationTokenSource? _cts;
26-
public GlobalLockService(ILogger logger, AppSettings appSettings, UserActivityMonitor activityMonitor, HotkeyHook hotkeyHook, TaskManagerHook taskManagerHook, MouseHook mouseHook, SystemKeyHook systemKeyHook, IServiceProvider serviceProvider, IWindowsMessageBox messageBox, IStringLocalizer<Lang> lang)
27+
public GlobalLockService(ILogger logger, AppSettings appSettings, UserActivityMonitor activityMonitor, HotkeyHook hotkeyHook, TaskManagerHook taskManagerHook, MouseHook mouseHook, SystemKeyHook systemKeyHook, IServiceProvider serviceProvider, IWindowsMessageBox messageBox, IStringLocalizer<Lang> lang, PopupService popupService)
2728
{
2829
_logger = logger;
2930
_appSettings = appSettings;
@@ -40,8 +41,10 @@ public GlobalLockService(ILogger logger, AppSettings appSettings, UserActivityMo
4041
_serviceProvider = serviceProvider;
4142
_messageBox = messageBox;
4243
_lang = lang;
44+
_popupService = popupService;
4345

4446
InitActivityMonitor();
47+
InitUserInputHandling();
4548

4649
_logger.Write("空闲自动锁定 -> 准备监控系统会话状态");
4750
SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
@@ -61,6 +64,27 @@ private void InitActivityMonitor()
6164
AutoLockStart();
6265
}
6366

67+
private void InitUserInputHandling()
68+
{
69+
_systemKeyHook.OnUserInput += (_, _) =>
70+
{
71+
if (_appSettings.LockTips && IsLocked)
72+
{
73+
_logger.Write("用户输入 -> 检测到键盘输入");
74+
_popupService.ShowMessage(_lang["LockTipsValue"]);
75+
}
76+
};
77+
78+
_mouseHook.OnUserInput += (_, _) =>
79+
{
80+
if (_appSettings.LockTips && IsLocked)
81+
{
82+
_logger.Write("用户输入 -> 检测到鼠标输入");
83+
_popupService.ShowMessage(_lang["LockTipsValue"]);
84+
}
85+
};
86+
}
87+
6488
/// <summary>
6589
/// Windows 事件监控
6690
/// </summary>
@@ -172,6 +196,9 @@ public void Lock()
172196
_mouseHook.HideCursor();
173197
}
174198

199+
_logger.Write("全局锁定 -> 启用鼠标钩子");
200+
_mouseHook.InstallHook();
201+
175202
if (_appSettings.ScreenUnlockMethod == ScreenUnlockMethods.Hotkey)
176203
{
177204
_logger.Write("全局锁定 -> 允许快捷键解锁,准备放行快捷键");
@@ -190,7 +217,7 @@ public void Lock()
190217
}
191218
}
192219
}
193-
_systemKeyHook.DisableSystemKey();
220+
_systemKeyHook.InstallHook();
194221

195222
if (_appSettings.IsDisableWindowsLock)
196223
{

0 commit comments

Comments
 (0)