我需要使用GeckoFX Web Control在網頁上發送Enter鍵按下事件。SendKey進入瀏覽器控制WinForm .Net
我不能使用SendKeys.Send({} ENTER)
有沒有辦法送進入通過Javascript在網頁上?
我需要使用GeckoFX Web Control在網頁上發送Enter鍵按下事件。SendKey進入瀏覽器控制WinForm .Net
我不能使用SendKeys.Send({} ENTER)
有沒有辦法送進入通過Javascript在網頁上?
由於您使用的是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);
}
注意一個通常不能使用正常javascript的nsIDOMWindowUtils接口,因爲它需要UniversalXPConnect特權。
這裏是巫術:
C#COM版本,調度在GeckoWebBrowser ENTER按鍵來GeckoNode。 不幸的是,我還沒有在GeckoFX 18中找到合適的包裝,所以所有的工作都是通過xpcom完成的。
13是輸入代碼,如果你需要發送的字符,將其設置爲0,並使用中charCode作爲最後一個參數InitKeyEvent
e是調度按鍵對象的youre。
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);