SendKey войдите в браузер управления WinForm .Net - PullRequest
0 голосов
/ 03 февраля 2012

Мне нужно отправить клавишу Enter, нажать «Событие» на веб-странице, используя GeckoFX Web Control.

Я не могу использовать SendKeys.Send ({ENTER})

Есть ли способ отправить вход через Javascript на веб-странице?

Ответы [ 2 ]

1 голос
/ 18 апреля 2013

вот магия вуду:

C # COM версия, отправляет нажатие клавиши ENTER на GeckoNode в GeckoWebBrowser. К сожалению, я не нашел подходящей оболочки в GeckoFX 18, поэтому вся работа выполняется через xpcom.

13 - это код для ввода, если вам нужно отправить символы, установите его в 0 и используйте код в качестве последнего параметра для InitKeyEvent

Здесь e - объект, на который вы посылаете клавишу.

 nsIDOMKeyEvent Event = Xpcom.QueryInterface<nsIDOMKeyEvent>(Browser.Window.DomWindow.GetDocumentAttribute().CreateEvent(new nsAString("KeyEvents")));
 Event.InitKeyEvent(new nsAString("keypress"), true, true, Browser.Window.DomWindow, false, false, false, false, (uint)13, (uint)0);
 Xpcom.QueryInterface<nsIDOMEventTarget>(e.DomObject).DispatchEvent(Event);

версия JavaScript, если вы можете внедрить javascript, это будет делать то же самое из среды javascript

 var Event = document.createEvent("KeyEvents");
 Event.initKeyEvent('keypress', true, true, window, false, false, false, false, 13, 0);
 e.dispatchEvent(Event);
1 голос
/ 09 февраля 2012

Поскольку вы используете geckofx, вы можете использовать интерфейс nsIDOMWindowUtils для отправки нажатия клавиши.

    var GeckoWebBrowser browser = ...;
    nsIDOMWindowUtils utils = Xpcom.QueryInterface<nsIDOMWindowUtils>(browser.Window.DomWindow);
    using (nsAString type = new nsAString("keypress"))
    {
      utils.SendKeyEvent(type, 0, 13, 0, false);
    }

Обратите внимание, что обычно нельзя использовать интерфейс nsIDOMWindowUtils из обычного javascript, так как для этого требуется привилегированный UniversalXPConnect.

...