2 回答
TA贡献1909条经验 获得超7个赞
但看起来这个库可能有一种新方法,我只需要弄清楚如何使用它
在我们使用输入注入之前,我们必须在应用程序清单中声明此功能,因为它是一个非标准功能。这是一项受限功能,这意味着您可以使用它安全地将您的应用程序发布到应用程序商店,但需要批准才能提交商店。
键盘输入
该类InjectedInputKeyboardInfo将作为键盘输入注入的基础。最重要的属性是 VirtualKey,它指定与哪个键相关的输入。使用 KeyOptions 我们可以指定更多选项,例如模拟按键弹起事件。
private async void Button_Click(object sender, RoutedEventArgs e)
{
InputInjector inputInjector = InputInjector.TryCreate();
for (int i = 0; i < 10; i++)
{
var info = new InjectedInputKeyboardInfo();
info.VirtualKey = (ushort)(VirtualKey.Tab);
inputInjector.InjectKeyboardInput(new[] { info });
await Task.Delay(1000);
}
}
更新
Shift+Tab
InputInjector inputInjector = InputInjector.TryCreate();
for (int i = 0; i < 10; i++)
{
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});
await Task.Delay(1000);
}
更新 1
对于释放密钥,我们需要将密钥选项设置为KeyUp并再次调用InjectKeyboardInput。
InputInjector inputInjector = InputInjector.TryCreate();
var ctrl = new InjectedInputKeyboardInfo();
ctrl.VirtualKey = (ushort)(VirtualKey.Control);
ctrl.KeyOptions = InjectedInputKeyOptions.KeyUp;
inputInjector.InjectKeyboardInput(new[] { ctrl });
TA贡献1982条经验 获得超2个赞
您可以使用 WIN32 API,获取应用程序的句柄并使用SendKeys.SendWait("{Tab}");
前任:
IntPtr handle = FindWindow(null, "YourApplicationName");
SetForegroundWindow(handle);
SendKeys.SendWait("{Tab}");
SendKeys.Flush();
如果您的 Tab 键顺序设置正确,它将在您指定的控件中按 Tab 键切换多少次。虽然这模拟了实际输入,所以如果您希望用户在系统选项卡顶部提供输入,它可能不太合适。
- 2 回答
- 0 关注
- 143 浏览
添加回答
举报