禁用并记录 windows 个快捷方式
Disable and record windows shortcuts
我正在尝试记录用户的组合键。
下面的代码可以很好地处理 ctr+A
之类的东西,它甚至可以记录 win-key
,尽管它并没有阻止它的效果。
但是如果我想录制 ctr+alt+del
、alt+tab
或 alt+F4
之类的东西,它根本不会录制!
CoreWindow.GetForCurrentThread().Dispatcher.AcceleratorKeyActivated += handleKey;
private void handleKey(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
bool isKeyDown = args.EventType.HasFlag(CoreAcceleratorKeyEventType.KeyDown);
bool isKeyUp = args.EventType.HasFlag(CoreAcceleratorKeyEventType.KeyUp);
var isKeyReleaseOrWasNotDownAlready = args.KeyStatus.IsKeyReleased || !args.KeyStatus.WasKeyDown;
if ((isKeyDown || isKeyUp) && isKeyReleaseOrWasNotDownAlready)
{
args.Handled = true;
triggerKeyEvent(args);//sends event to a recorder
}
}
有没有办法停止热键传播并记录下来?
我发现使用 KeyboardDeliveryInterceptor
适用于除 ctr+alt+del
或 win+L
之外的所有内容,但无论如何都无法阻止这些组合。
记得添加<rescap:Capability Name="inputForegroundObservation"/>
限制能力。
我正在尝试记录用户的组合键。
下面的代码可以很好地处理 ctr+A
之类的东西,它甚至可以记录 win-key
,尽管它并没有阻止它的效果。
但是如果我想录制 ctr+alt+del
、alt+tab
或 alt+F4
之类的东西,它根本不会录制!
CoreWindow.GetForCurrentThread().Dispatcher.AcceleratorKeyActivated += handleKey;
private void handleKey(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
bool isKeyDown = args.EventType.HasFlag(CoreAcceleratorKeyEventType.KeyDown);
bool isKeyUp = args.EventType.HasFlag(CoreAcceleratorKeyEventType.KeyUp);
var isKeyReleaseOrWasNotDownAlready = args.KeyStatus.IsKeyReleased || !args.KeyStatus.WasKeyDown;
if ((isKeyDown || isKeyUp) && isKeyReleaseOrWasNotDownAlready)
{
args.Handled = true;
triggerKeyEvent(args);//sends event to a recorder
}
}
有没有办法停止热键传播并记录下来?
我发现使用 KeyboardDeliveryInterceptor
适用于除 ctr+alt+del
或 win+L
之外的所有内容,但无论如何都无法阻止这些组合。
记得添加<rescap:Capability Name="inputForegroundObservation"/>
限制能力。