Phase 4: 全局快捷键拦截 (Win32 API)
- 新增 HotKeyManager (Helpers/), 使用 user32.dll RegisterHotKey/UnregisterHotKey 注册系统级快捷键 - 支持 Ctrl/Alt/Shift/Win 修饰键组合, 单字符键和命名键(F1-F12等)解析 - MainWindow.OnSourceInitialized 挂载 HwndSource.AddHook 拦截 WM_HOTKEY 消息 - 启动时自动注册所有含快捷键的工具, 工具增删改后自动重新注册 - 快捷键冲突时记录 Win32 错误码, 无效格式打印警告 - 新增 12 个 HotKeyManager 单元测试 (73 tests total)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using Moq;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using PersonalToolBox.Helpers;
|
||||
using PersonalToolBox.Models;
|
||||
using PersonalToolBox.Services;
|
||||
using PersonalToolBox.ViewModels;
|
||||
@@ -12,6 +13,7 @@ public class MainViewModelTests
|
||||
private readonly Mock<IDataService> _dataServiceMock = new();
|
||||
private readonly Mock<IProcessExecutionService> _processServiceMock = new();
|
||||
private readonly Mock<IServiceProvider> _serviceProviderMock = new();
|
||||
private readonly Mock<HotKeyManager> _hotKeyManagerMock;
|
||||
private readonly AppConfig _config;
|
||||
|
||||
public MainViewModelTests()
|
||||
@@ -33,11 +35,13 @@ public class MainViewModelTests
|
||||
]
|
||||
};
|
||||
|
||||
_hotKeyManagerMock = new Mock<HotKeyManager>(_logServiceMock.Object, _processServiceMock.Object);
|
||||
_dataServiceMock.Setup(d => d.Config).Returns(_config);
|
||||
}
|
||||
|
||||
private MainViewModel CreateViewModel() =>
|
||||
new(_logServiceMock.Object, _dataServiceMock.Object, _processServiceMock.Object, _serviceProviderMock.Object);
|
||||
new(_logServiceMock.Object, _dataServiceMock.Object, _processServiceMock.Object,
|
||||
_serviceProviderMock.Object, _hotKeyManagerMock.Object);
|
||||
|
||||
[Fact]
|
||||
public void Constructor_LoadsCategories_IncludingAll()
|
||||
|
||||
Reference in New Issue
Block a user