Я использую Windows7 и .Net4.0 / WPF (не Win Forms).Решение с
web.Focus();
SendKeys.Send("^f");
у меня не сработало.Во-первых, команда send создает исключение System.InvalidOperationException (в котором говорится, что мое приложение не обрабатывает событие и что мне следует использовать SendKeys.SendWait ()).Во-вторых, SendKeys.SendWait ("^ f") просто ничего не делает.
Мое решение требует фокусировки окна документа вместо окна браузера:
System.Windows.Controls.WebBrowser HtmlView; //from xaml
HTMLDocument HtmlDoc { get { return (HTMLDocument)HtmlView.Document; } }
HtmlDoc.parentWindow.focus(); //when focusing this window sending Ctr-F has an effect
Далее я использую keybd_event ()отправить ключевое сообщение
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,
UIntPtr dwExtraInfo);
byte vKey_f = 0x46;
byte vKey_ctr = 0x11;
byte f_down = 0x21;
byte f_up = 0xa1;
byte ctrl_down = 0x1d;
byte ctrl_up = 0x9d;
byte event_keyup = 0x0002;
keybd_event(vKey_ctr, ctrl_down, 0, UIntPtr.Zero); // Ctrl Press
keybd_event(vKey_f, f_down, 0, UIntPtr.Zero); // f Press
keybd_event(vKey_f, f_up, event_keyup, UIntPtr.Zero); // f Release
keybd_event(vKey_ctr, ctrl_up, event_keyup, UIntPtr.Zero); // Ctrl Release
Почему «^ f» не работает в моем случае - я не знаю.Но keybd_event () работает нормально, хотя msdn (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspx) заявляет: «Эта функция была заменена. Вместо этого используйте SendInput.». Я попытался SendInput (), но не смог увидеть эффект.
Дополнительная информацияto keybd_event ():