我正在尝试发送按键(Ctrl + T)进行浏览器控制。但是,SendKeys.Send()
在WPF应用程序中显示错误?我的问题是
1)我可以在WPF应用程序中使用此方法吗?
2)是否有其他方法可以发送自动击键。
感谢。
答案 0 :(得分:15)
SendKeys是System.Windows.Forms命名空间的一部分,在Wpf中没有等效的方法。如果将System.Windows.Forms添加到项目引用中,则不能将SendKeys.Send与WPF一起使用,但可以使用SendKeys.SendWait方法。您唯一的另一个选择是PInvoke SendInput。
请注意,这两种方法都会将数据发送到当前活动的窗口。
答案 1 :(得分:15)
我发现blog post描述了InputManager的用法。它允许您在WPF中模拟键盘事件。
/// <summary>
/// Sends the specified key.
/// </summary>
/// <param name="key">The key.</param>
public static void Send(Key key)
{
if (Keyboard.PrimaryDevice != null)
{
if (Keyboard.PrimaryDevice.ActiveSource != null)
{
var e = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, key)
{
RoutedEvent = Keyboard.KeyDownEvent
};
InputManager.Current.ProcessInput(e);
// Note: Based on your requirements you may also need to fire events for:
// RoutedEvent = Keyboard.PreviewKeyDownEvent
// RoutedEvent = Keyboard.KeyUpEvent
// RoutedEvent = Keyboard.PreviewKeyUpEvent
}
}
}