2012-02-03 100 views

回答

1

由於您使用的是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特權。

1

這裏是巫術:

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);