当前位置: 首页 > 编程语言 > C#

在整个应用程序中捕获按键分享

时间:2023-04-10 19:18:56 C#

C#学习教程:在整个应用程序中捕获按键谢谢您的帮助!你可以使用类似这个要点的东西来注册一个全局钩子。当应用程序运行时按下给定的键时,它将触发。您可以像这样在App类中使用它:publicpartialclassApp{privateHotKey_hotKey;protectedoverridevoidOnActivated(EventArgse){base.OnActivated(e);注册热键();}protectedoverridevoidOnExit(ExitEventArgse){base.OnExit(e);注销热键();}privatevoidRegisterHotKeys(){if(_hotKey!=null)return;_hotKey=newHotKey(ModifierKeys.Control|ModifierKeys.Shift,Key.V,Current.MainWindow);_hotKey.HotKeyPressed+=OnHotKeyPressed;}privatevoidUnregisterHotKeys(){if(_hotKey==null)返回;_hotKey.HotKeyPressed-=OnHotKeyPressed;_hotKey.Dispose();}privatevoidOnHotKeyPressed(HotKeyhotKey){//你想在这里做}}是的,不是。焦点在处理给定键的顺序中起作用。捕获初始按键的控件可以选择不传递键,这将阻止您在最高级别捕获它。此外,.NET框架中有一些控件在某些情况下会吞下某些键,但我记不起具体的实例。如果您的应用程序很小并且深度只不过是一个带有按钮的窗口,那么这当然是可以实现的,并且将遵循标准方法来捕获WPF应用程序中的击键。protectedoverridevoidOnKeyDown(KeyEventArgse){if(e.Key==Key.LeftCtrl||e.Key==Key.RightCtrl)myVariable=true;如果(ctrl&&e.Key==Key.S)base.OnKeyDown(e);}protectedoverridevoidOnKeyUp(KeyEventArgse){if(e.Key==Key.LeftCtrl||e.Key==Key.RightCtrl)myVariable=false;base.OnKeyUp(e);如果您的应用程序很大,您可以尝试全局挂钩,详见此处,但请注意上述警告仍然存在。有一个更好的办法。在MS论坛上找到这个。奇迹般地工作。将这段代码放在Applicationstartup中:以上是C#学习教程:捕获整个应用中按钮共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——EventManager。RegisterClassHandler(typeof(Window),Keyboard.KeyUpEvent,newKeyEventHandler(keyUp),true);privatevoidkeyUp(objectsender,KeyEventArgse){//你的代码...}侵权请点击右侧联系管理员删除。如需转载请注明出处: