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 關注
- 207 瀏覽
添加回答
舉報