如何解决如何在 UWP 应用程序中以编程方式一次按下组合键
我想在 C# 中同时按下 Ctrl+w。
[DllImport("user32.dll",CharSet = CharSet.Ansi,CallingConvention = CallingConvention.StdCall)]
public static extern void keybd_event(uint bVk,uint bScan,uint dwFlags,uint dwExtraInfo);
public static void pressKey(KeyCode keycode)
{
keybd_event(Convert.ToUInt16(keycode),0);
}
此方法一次只能按一个键。
编辑:这不是 Windows 窗体应用程序,这是 UWP 应用程序。
这是一个 UWP 应用程序,因此 windows 窗体方法很可能在此处不起作用,请停止将我的问题标记为类似问题。
解决方法
如何在 UWP 应用程序中以编程方式一次按下组合键
可以参考Keyboard accelerators文档制作键盘加速器,在xaml中定义UWP控件的键盘加速器
<Button Content="Save" Click="OnSave">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="S" Modifiers="Control" />
</Button.KeyboardAccelerators>
</Button>
在后面的代码中定义
private void TextBlock_PreviewKeyDown(object sender,KeyRoutedEventArgs e)
{
var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(Windows.System.VirtualKey.Control);
var isCtrlDown = ctrlState == CoreVirtualKeyStates.Down || ctrlState
== (CoreVirtualKeyStates.Down | CoreVirtualKeyStates.Locked);
if (isCtrlDown && e.Key == Windows.System.VirtualKey.S)
{
// Your custom keyboard accelerator behavior.
e.Handled = true;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。