GeckoFX Web コントロールを使用して、Web ページで Enter キー プレス イベントを送信する必要があります。
SendKeys.Send({ENTER}) を使用できません
WebPage で Javascript 経由で入力を送信する方法はありますか?
GeckoFX Web コントロールを使用して、Web ページで Enter キー プレス イベントを送信する必要があります。
SendKeys.Send({ENTER}) を使用できません
WebPage で Javascript 経由で入力を送信する方法はありますか?
ここにブードゥーの魔法があります:
C# COM バージョンでは、GeckoWebBrowser の GeckoNode に ENTER キー押下をディスパッチします。残念ながら、GeckoFX 18 で適切なラッパーが見つからなかったため、すべての作業は xpcom を介して行われます。
13 は入力用のコードです。文字を送信する必要がある場合は、0 に設定し、charcode を 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);
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);
}
UniversalXPConnect 特権が必要なため、通常は通常の JavaScript から nsIDOMWindowUtils インターフェースを使用できないことに注意してください。