C# 如何在UWP中使用代码注入多个键的键盘输入

C# 如何在UWP中使用代码注入多个键的键盘输入,c#,xaml,uwp,C#,Xaml,Uwp,尝试模拟按下Tab键和Shift+Tab键(反向Tab键)时代码中包含的功能,以便它们可以与按钮或键盘上的其他键一起使用 得到了制表符工作的模拟,我只是不知道如何模拟同时按下两个键来模拟Shift+制表符 private void Tab(string s) { InputInjector inputInjector = InputInjector.TryCreate(); var info = new Inject

尝试模拟按下Tab键和Shift+Tab键(反向Tab键)时代码中包含的功能,以便它们可以与按钮或键盘上的其他键一起使用

得到了制表符工作的模拟,我只是不知道如何模拟同时按下两个键来模拟Shift+制表符

        private void Tab(string s)
        {
            InputInjector inputInjector = InputInjector.TryCreate();
            var info = new InjectedInputKeyboardInfo();
            if (s == "Right")
            {
                info.VirtualKey = (ushort)(VirtualKey.Tab);
            }
            else if (s == "Left")
            {
                //This doesn't actually exist, but How would I do this?
                info.VirtualKey = (ushort)(VirtualKey.ShiftTab);
            }

            inputInjector.InjectKeyboardInput(new[] { info });
        }

        private void Grid_KeyDown(object sender, KeyRoutedEventArgs e)
        {
            switch (e.Key)
            {
                case VirtualKey.Number1:
                    Tab("Left");
                    break;
                case VirtualKey.Q:
                    Tab("Right");
                    break;
            }
        }

到目前为止,当按下Q键时,制表符工作正常,我只需要了解如何在按下数字1键时执行Shift+制表符。任何帮助都将不胜感激

它们被称为
修饰符

VirtualKey
+
VirtualKey修饰符

如果您想使用
InputInjector
查看
ScanCode
,因为它们代表键盘上键的唯一标识-现在它们可能不适用于所有键盘-但shift键应该相同。我附上了一个常见扫描码列表-阅读扫描码,看看它给你带来了什么价值。InputInjector接受一个数组,因此只需对要注入的两个代码进行路径选择,或查找组合扫描代码


请尝试将换档选项卡的扫描代码设置为0F,以回答我自己的问题。在其他用户就类似问题提供帮助后,模拟多按钮按下的最简单方法如下:

            InputInjector inputInjector = InputInjector.TryCreate();
            var shift = new InjectedInputKeyboardInfo();
            shift.VirtualKey = (ushort)(VirtualKey.Shift);
            shift.KeyOptions = InjectedInputKeyOptions.None;


            var tab = new InjectedInputKeyboardInfo();
            tab.VirtualKey = (ushort)(VirtualKey.Tab);
            tab.KeyOptions = InjectedInputKeyOptions.None;
            inputInjector.InjectKeyboardInput(new[] { shift, tab });

在本例中,我使用SHIFT+Tab.

因此我更改了
info.VirtualKey=(ushort)(VirtualKey.ShiftTab)转换为
(ushort)(VirtualKey.Tab)+(ushort)(VirtualKey修饰符.Shift)
,但这似乎没有达到预期效果。你能举例说明如何正确使用它吗?我没有太多时间来写一个例子。但它们存在于这里。Github search是您的朋友:)如果您仍然有问题,请告诉我。感谢您在这方面的帮助。首先,我不知道github搜索,所以这对我的项目的未来来说是非常棒的!但是,我无法找到与我的问题相关的代码。在C#中,只有51个“InputInjector”结果,没有一个尝试注入多个键组合。如果你有时间给我举个例子的话,我不会在这个问题上着急。再次感谢!:)@B海伦我用可能解决您问题的信息更新了我的答案我尝试了
info.ScanCode=(ushort)0F我认为它没有任何作用