C#中针对系统密钥的按键关闭事件

C#中针对系统密钥的按键关闭事件,c#,xaml,keydown,eventhandler,C#,Xaml,Keydown,Eventhandler,我正在尝试捕获任何按键下的事件,而不管哪个项目具有焦点。我的构造函数中有以下代码: Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown; 我的职责是: void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args) { //Stuff in here } 这适用于常规键(箭头、字母),但不接收特殊键(如

我正在尝试捕获任何
按键下的事件,而不管哪个项目具有焦点。我的构造函数中有以下代码:

Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
我的职责是:

void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
{
    //Stuff in here
}
这适用于常规键(箭头、字母),但不接收特殊键(如Enter或Tab)的事件


如何拦截Enter或Tab键的事件并阻止系统处理它?我需要始终获取事件,无论哪个对象具有焦点。

处理键的过程非常复杂。KeyDown实际上在这个过程中很晚,不包括“控制”键。要获取这些键,您需要覆盖IsInputKey(用于制表键和控制键)或ProcessDialogKey(用于箭头键)。请参阅此处的一些优秀文档

您可能需要查看Windows挂钩。对于您的目的来说,它们比试图捕获系统事件更有用。我可以找到并发布一些连接文档的链接,如果你想的话,你应该看一下关于“按下键”的文档,按下键是指将要“显示”的键。你也可以尝试处理向上键和按下键来覆盖“海滨”听起来像是在一个高层次上,你正在使用键盘记录器(如果这是不是实际的预期目的,则是另一个故事)您可能希望搜索如何在c#中构建键盘记录器,以此作为开始的基础。正如rmn36所述,它需要windows钩子来完成您想要做的事情。您无法从该事件中获取非系统键。严重的未指定,但基本信息是,您无法中断基本键盘使用。只有在UI运行时,您才能获得Tabs少于2个可聚焦控件。只有当焦点不在使用它的控件(如按钮)上时,您才能进入。我的水晶球显示您正在查找CharacterReceived事件。这不是Winforms问题。