public void Eval(string javascript) { CefEvalJavascriptEvent javascriptEvent = new CefEvalJavascriptEvent() { InstanceID = InstanceID, Javascript = javascript, }; SendEvent(javascriptEvent); }
private void SendCallback(CefEvalJavascriptEvent evalEvent, string result) { CefJavascriptResultEvent resultEvent = new CefJavascriptResultEvent() { InstanceID = InstanceID, CallbackID = evalEvent.CallbackID, Result = result, }; Program.SendEvent(resultEvent); }
public void EvalCallback(string javascript, Action <string> callback) { string callbackId = Guid.NewGuid().ToString(); _jsCallbacks[callbackId] = callback; CefEvalJavascriptEvent cefEvent = new CefEvalJavascriptEvent { InstanceID = InstanceID, CallbackID = callbackId, Javascript = javascript, }; SendEvent(cefEvent); }
public void ReceiveEvent(CefEvent cefEvent) { #region Handle mouse event if (cefEvent is CefMouseEvent) { CefMouseEvent cefMouseEvent = (CefMouseEvent)cefEvent; MouseEvent mouseEvent; CefEventFlags mouseEventFlags = CefEventFlags.None; if (cefMouseEvent.MouseButton != -1) { MouseButtonType pressedButton; switch (cefMouseEvent.MouseButton) { case 0: pressedButton = MouseButtonType.Left; mouseEventFlags = CefEventFlags.LeftMouseButton; break; case 1: pressedButton = MouseButtonType.Right; mouseEventFlags = CefEventFlags.RightMouseButton; break; case 2: pressedButton = MouseButtonType.Middle; mouseEventFlags = CefEventFlags.MiddleMouseButton; break; default: pressedButton = MouseButtonType.Left; mouseEventFlags = CefEventFlags.LeftMouseButton; break; } mouseEvent = new MouseEvent(cefMouseEvent.MouseX, cefMouseEvent.MouseY, mouseEventFlags); _browser.GetBrowser().GetHost().SendMouseClickEvent(mouseEvent, pressedButton, !cefMouseEvent.MouseButtonDown, 1); } mouseEvent = new MouseEvent(cefMouseEvent.MouseX, cefMouseEvent.MouseY, mouseEventFlags); if (cefMouseEvent.ScollDeltaX != 0 || cefMouseEvent.ScollDeltaY != 0) { _browser.GetBrowser().GetHost().SendMouseWheelEvent(mouseEvent, cefMouseEvent.ScollDeltaX * 100, cefMouseEvent.ScollDeltaY * 100); } if (cefMouseEvent.MouseButton != -1) { return; } _browser.GetBrowser().GetHost().SendMouseMoveEvent(mouseEvent, false); return; } #endregion #region Handle keyboard event if (cefEvent is CefKeyboardEvent) { CefKeyboardEvent cefKeyboardEvent = (CefKeyboardEvent)cefEvent; // handle KeyEvent keyEvent = new KeyEvent() { Type = cefKeyboardEvent.IsChar ? KeyEventType.Char : (cefKeyboardEvent.IsDown ? KeyEventType.KeyDown : KeyEventType.KeyUp), WindowsKeyCode = cefKeyboardEvent.IsChar ? GetCharsFromKeys(cefKeyboardEvent.Key, cefKeyboardEvent.Shift)[0] : cefKeyboardEvent.Key, FocusOnEditableField = true, Modifiers = cefKeyboardEvent.Shift ? CefEventFlags.ShiftDown : CefEventFlags.None, IsSystemKey = false }; _browser.GetBrowser().GetHost().SendKeyEvent(keyEvent); return; } #endregion #region Handle javascript event if (cefEvent is CefEvalJavascriptEvent) { CefEvalJavascriptEvent javascriptEvent = (CefEvalJavascriptEvent)cefEvent; if (javascriptEvent.CallbackID.Length > 0) { Task <JavascriptResponse> task = _browser.EvaluateScriptAsync(javascriptEvent.Javascript); task.ContinueWith(result => SendCallback(javascriptEvent, result.Result.Result.ToString())); return; } _browser.EvaluateScriptAsync(javascriptEvent.Javascript); return; } #endregion #region Handle static call result event if (cefEvent is CefJavascriptResultEvent) { _staticBinding.HandleEvent((CefJavascriptResultEvent)cefEvent); return; } #endregion }