C# 如何在UWP中使用代码注入多个键的键盘输入
尝试模拟按下Tab键和Shift+Tab键(反向Tab键)时代码中包含的功能,以便它们可以与按钮或键盘上的其他键一起使用 得到了制表符工作的模拟,我只是不知道如何模拟同时按下两个键来模拟Shift+制表符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
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代码>我认为它没有任何作用