示例#1
0
        public void Eval(string javascript)
        {
            CefEvalJavascriptEvent javascriptEvent = new CefEvalJavascriptEvent()
            {
                InstanceID = InstanceID,
                Javascript = javascript,
            };

            SendEvent(javascriptEvent);
        }
示例#2
0
        private void SendCallback(CefEvalJavascriptEvent evalEvent, string result)
        {
            CefJavascriptResultEvent resultEvent = new CefJavascriptResultEvent()
            {
                InstanceID = InstanceID,
                CallbackID = evalEvent.CallbackID,
                Result     = result,
            };

            Program.SendEvent(resultEvent);
        }
示例#3
0
        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);
        }
示例#4
0
        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
        }