Example #1
0
        public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode,
                               int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
        {
            if (type != KeyType.KeyUp || !Enum.IsDefined(typeof(Keys), windowsKeyCode))
            {
                return(false);
            }

            var key = (Keys)windowsKeyCode;

            if (key == Keys.F12)
            {
                browser.ShowDevTools();
            }
            else if (key == Keys.F5 && modifiers == CefEventFlags.ControlDown) // Ctrl+F5 - Cache reload
            {
                browser.Reload(true);
            }
            else if (key == Keys.F5) // F5 - Reload
            {
                browser.Reload();
            }
            else if (key == Keys.I && modifiers == (CefEventFlags.ControlDown | CefEventFlags.ShiftDown)) // Ctrl+Shift+I
            {
                browser.ShowDevTools();
            }
            else if (key == Keys.F1) // F1 - Opens Wiki page
            {
                Process.Start(new ProcessStartInfo {
                    FileName = "https://github.com/TcNobo/TcNo-Acc-Switcher/wiki", UseShellExecute = true
                });
            }

            return(false);
        }
Example #2
0
        /// <inheritdoc/>>
        public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
        {
            var result = false;

            Debug.WriteLine("OnKeyEvent: KeyType: {0} 0x{1:X} Modifiers: {2}", type, windowsKeyCode, modifiers);
            // TODO: Handle MessageNeeded cases here somehow.
            if (type == KeyType.KeyUp && Enum.IsDefined(typeof(Keys), windowsKeyCode))
            {
                var key = (Keys)windowsKeyCode;
                switch (key)
                {
                case Keys.F12:
                    browser.ShowDevTools();
                    break;

                case Keys.F5:

                    if (modifiers == CefEventFlags.ControlDown)
                    {
                        browser.Reload(true);     //强制忽略缓存
                    }
                    else
                    {
                        browser.Reload();
                    }
                    break;
                }
            }

            return(result);
        }
Example #3
0
 bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
 {
     if ((int)commandId == ShowDevTools)
     {
         browser.ShowDevTools();
     }
     if ((int)commandId == CloseDevTools)
     {
         browser.CloseDevTools();
     }
     if ((int)commandId == S_TPIP)
     {
         if (Library.is_PIP)
         {
             Library.stopPIP();
         }
         else
         {
             Library.startPIP();
         }
     }
     //if ((int)commandId == ShowSetting)
     //{
     //    frmSetting frm = new frmSetting();
     //    frm.ShowDialog();
     //}
     return(false);
 }
Example #4
0
        bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            switch ((int)commandId)
            {
            case ShowDevTools:
                browser.ShowDevTools();
                break;

            case CloseDevTools:
                browser.CloseDevTools();
                break;

            case SaveImage:
                ExecuteSaveFileByUrl(parameters.SourceUrl.ToString(), frame);
                break;

            case SaveLink:
                ExecuteSaveFileByUrl(parameters.UnfilteredLinkUrl, frame);
                break;

            case CopyLink:
                Clipboard.SetDataObject(parameters.UnfilteredLinkUrl);
                break;

            case LinkOpenDefaultBrowser:
                System.Diagnostics.Process.Start("explorer.exe", parameters.UnfilteredLinkUrl);
                break;
            }

            return(false);
        }
Example #5
0
        /// <summary>
        /// 实现F12调出调试窗口
        /// </summary>
        /// <param name="browserControl"></param>
        /// <param name="browser"></param>
        /// <param name="type"></param>
        /// <param name="windowsKeyCode"></param>
        /// <param name="nativeKeyCode"></param>
        /// <param name="modifiers"></param>
        /// <param name="isSystemKey"></param>
        /// <returns></returns>
        public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
        {
            if (type != KeyType.KeyUp)
            {
                return(false);
            }

            //todo 使用System.Windows.Input.Key.F12来实现
            //目前windowsKeyCode和System.Windows.Input.Key.F12无法对应 没有深入研究
            if (windowsKeyCode == F12KeyCode)
            {
                Console.WriteLine("F12");
                browser.ShowDevTools();
                return(true);
            }

            if (windowsKeyCode == F5KeyCode)
            {
                Console.WriteLine("F5");
                if (browser.MainFrame?.Url != null)
                {
                    if (browser.MainFrame.Url.StartsWith("chrome-devtools:", StringComparison.OrdinalIgnoreCase))
                    {
                        //chrome-devtools://devtools/devtools_app.html
                        return(false);
                    }
                }

                browser.Reload(true);
                return(true);
            }

            return(false);
        }
Example #6
0
 public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
 {
     if (type == KeyType.KeyUp && Enum.IsDefined(typeof(Keys), windowsKeyCode))
     {
         var key = (Keys)windowsKeyCode;
         if (key == Keys.F5)
         {
             browser.Reload();
         }
         else if (key == Keys.F12)
         {
             browser.ShowDevTools();
         }
         else if (key == Keys.P)
         {
             if (ChromeWebBrowser.spiderManager.taskStatus.Visible)
             {
                 ChromeWebBrowser.spiderManager.taskStatus.Activate();
             }
             else
             {
                 if (ChromeWebBrowser.spiderManager.taskStatus.IsDisposed)
                 {
                     ChromeWebBrowser.spiderManager.taskStatus = new TaskStatusMain();
                 }
                 ChromeWebBrowser.spiderManager.taskStatus.Show();
             }
         }
     }
     return(false);
 }
Example #7
0
        /// <summary>
        /// Called before a keyboard event is sent to the renderer. Return true if the event
        ///  was handled or false otherwise. If the event will be handled in CefSharp.IKeyboardHandler.OnKeyEvent(CefSharp.IWebBrowser,CefSharp.IBrowser,CefSharp.KeyType,System.Int32,System.Int32,CefSharp.CefEventFlags,System.Boolean)
        ///  as a keyboard shortcut set isKeyboardShortcut to true and return false.
        /// </summary>
        /// <param name="browserControl">The CefSharp.IWebBrowser control this request is for.</param>
        /// <param name="browser">The browser instance.</param>
        /// <param name="type">Whether this was a key up/down/raw/etc...</param>
        /// <param name="windowsKeyCode">The Windows key code for the key event. This value is used by the DOM specification.
        ///  Sometimes it comes directly from the event (i.e. on Windows) and sometimes it's
        ///  determined using a mapping function. See WebCore/platform/chromium/KeyboardCodes.h
        ///  for the list of values.</param>
        /// <param name="nativeKeyCode">The native key code. On Windows this appears to be in the format of WM_KEYDOWN/WM_KEYUP/etc... lParam data.</param>
        /// <param name="modifiers">What other modifier keys are currently down: Shift/Control/Alt/OS X Command/etc...</param>
        /// <param name="isSystemKey">Indicates whether the event is considered a "system key" event (see http://msdn.microsoft.com/en-us/library/ms646286(VS.85).aspx for details).</param>
        /// <param name="isKeyboardShortcut">See the summary for an explanation of when to set this to true.</param>
        /// <returns>v</returns>
        public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
        {
            isKeyboardShortcut = false;

            //Logger.Debug("OnPreKeyEvent: KeyType: {0} 0x{1:X} Modifiers: {2}", type, windowsKeyCode, modifiers);
            // Debug.WriteLine("OnPreKeyEvent PreProcessControlState: {0}", state);
            if (type == KeyType.RawKeyDown)
            {
                switch ((Keys)windowsKeyCode)
                {
                // F12 to open browser dev console.
                case Keys.F12:
                    browser.ShowDevTools();
                    return(true);

                // F5 to reload (refresh); Shift + F5 to reload without cache
                case Keys.F5:
                    browser.Reload(modifiers == CefEventFlags.ShiftDown);
                    return(true);

                default:
                    break;
                }
            }

            return(false);
        }
        public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
        {
            if (type == KeyType.KeyUp && Enum.IsDefined(typeof(Keys), windowsKeyCode))
            {
                var key = (Keys)windowsKeyCode;
                switch (key)
                {
                case Keys.F12:
                    browser.ShowDevTools();
                    break;

                case Keys.F5:
                    if (modifiers == CefEventFlags.ControlDown)
                    {
                        //MessageBox.Show("ctrl+f5");
                        browser.Reload(true);     //强制忽略缓存
                    }
                    else
                    {
                        //MessageBox.Show("f5");
                        browser.Reload();
                    }
                    break;
                }
            }
            return(false);
        }
Example #9
0
            bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
            {
                switch ((int)commandId)
                {
                case GetCurrentCookie:
                    _this.EndWork(browserControl.Address);
                    break;

                case InputCookie:
                    string cookieStr = "";
                    _this.form.Invoke(new Action(() =>
                    {
                        cookieStr = Utils.InputDialog("输入 Cookie 字符串 (通过 Chrome EditThisCookie 扩展完整获取)", "手动输入 Cookie");
                    }));
                    if (!string.IsNullOrEmpty(cookieStr))
                    {
                        _this.EndWork(null, cookieStr);
                    }
                    else
                    {
                        MessageBox.Show("Cookie 字符串不能为空", "手动输入 Cookie", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    break;

                case ShowDevTools:
                    browser.ShowDevTools();
                    break;
                }

                return(false);
            }
        public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
        {
            if (type == KeyType.KeyUp && Enum.IsDefined(typeof(Keys), windowsKeyCode))
            {
                var key = (Keys)windowsKeyCode;
                switch (key)
                {
                case Keys.F1:    //F1事件,打开钱箱
                    PublicUtil.openMoneyBox();
                    break;

                case Keys.F4:    //F4事件,释放内存
                    MainForm.ClearMemory();
                    break;

                case Keys.F5:    //F5事件,刷新
                    browser.Reload();
                    break;

                case Keys.F12:    //F12事件,调出开发者工具
                    browser.ShowDevTools();
                    break;
                }
            }
            return(false);
        }
        protected virtual bool HandleRawKey(IWebBrowser browserControl, IBrowser browser, Keys key, CefEventFlags modifiers)
        {
            if (modifiers == (CefEventFlags.ControlDown | CefEventFlags.ShiftDown) && key == Keys.I)
            {
                if (BrowserUtils.HasDevTools)
                {
                    browser.ShowDevTools();
                }
                else
                {
                    browserControl.AsControl().InvokeSafe(() => {
                        string extraMessage;

                        if (Program.IsPortable)
                        {
                            extraMessage = "Please download the portable installer, select the folder with your current installation of TweetDuck Portable, and tick 'Install dev tools' during the installation process.";
                        }
                        else
                        {
                            extraMessage = "Please download the installer, and tick 'Install dev tools' during the installation process. The installer will automatically find and update your current installation of TweetDuck.";
                        }

                        FormMessage.Information("Dev Tools", "You do not have dev tools installed. " + extraMessage, FormMessage.OK);
                    });
                }

                return(true);
            }

            return(false);
        }
        public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
        {
            if (type != KeyType.KeyUp)
            {
                return(false);
            }

            Keys key = (Keys)windowsKeyCode | modifiers.GetKey();

            switch (key)
            {
            case Keys.F5 | Keys.None:
                browser.Reload();
                return(true);

            case Keys.F9 | Keys.None:
            case Keys.F12 | Keys.None:
                browser.ShowDevTools();
                return(true);
            }

            if (key == (Keys.Control | Keys.P))
            {
                var relativePath = String.Format(@".\output-{0}.pdf", Guid.NewGuid().ToString());
                var fullPath     = Path.GetFullPath(relativePath);
                Debug.WriteLine(browser.GetType());
                PdfPrintSettings pdfPrintSettings = new PdfPrintSettings();
                pdfPrintSettings.Landscape          = true;
                pdfPrintSettings.BackgroundsEnabled = true;
                browser.PrintToPdfAsync(fullPath, pdfPrintSettings).ContinueWith(OnPrintToPdfCompleted, fullPath);
                return(true);
            }

            return(false);
        }
 bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
 {
     if ((int)commandId == ShowDevTools)
     {
         browser.ShowDevTools();
     }
     return(false);
 }
Example #14
0
        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            int id = (int)commandId;

            if (id == ShowDevTools)
            {
                browser.ShowDevTools();
            }
            if (id == CloseDevTools)
            {
                browser.CloseDevTools();
            }
            if (id == SaveImageAs)
            {
                browser.GetHost().StartDownload(parameters.SourceUrl);
            }
            if (id == SaveLinkAs)
            {
                browser.GetHost().StartDownload(parameters.LinkUrl);
            }
            if (id == OpenLinkInNewTab)
            {
                ChromiumWebBrowser newBrowser = myForm.AddNewBrowserTab(parameters.LinkUrl, false, browser.MainFrame.Url);
            }
            if (id == CopyLinkAddress)
            {
                Clipboard.SetText(parameters.LinkUrl);
            }
            if (id == CloseTab)
            {
                myForm.InvokeOnParent(delegate() {
                    myForm.CloseActiveTab();
                });
            }
            if (id == RefreshTab)
            {
                myForm.InvokeOnParent(delegate() {
                    myForm.RefreshActiveTab();
                });
            }
            if (id == CopyImageLink)
            {
                Clipboard.SetText(parameters.SourceUrl);
            }
            if (id == CopyImage)
            {
                WebClient wc = new WebClient();

                using (MemoryStream stream = new MemoryStream(wc.DownloadData(parameters.SourceUrl)))
                {
                    Image img = Bitmap.FromStream(stream);
                    Clipboard.SetImage(img);
                }
            }

            return(false);
        }
 public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
 {
     if (type == KeyType.RawKeyDown && windowsKeyCode == (int)Keys.F12)
     {
         browser.ShowDevTools();
         return(true);
     }
     return(false);
 }
Example #16
0
 bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
 {
     if ((int)commandId == ShowDevTools)
     {
         browser.ShowDevTools();
     }
     if ((int)commandId == CloseDevTools)
     {
         browser.CloseDevTools();
     }
     return false;
 }
        public bool OnKeyEvent(IWebBrowser chromiumWebBrowser, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
        {
#if DEBUG
            var winKey = (Keys)windowsKeyCode;
            if (winKey == Keys.F && modifiers == CefEventFlags.ControlDown)
            {
                browser.ShowDevTools();
                return(true);
            }
#endif
            return(false);
        }
Example #18
0
        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters,
                                         CefMenuCommand commandId, CefEventFlags eventFlags)
        {
#if DEBUG
            if (commandId == CEF_MENU_OPEN_DEV_TOOLS)
            {
                browser.ShowDevTools();
                return(true);
            }
#endif
            return(false);
        }
        /// <inheritdoc/>>
        public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
        {
            var result = false;

            // Debug.WriteLine("OnKeyEvent: KeyType: {0} 0x{1:X} Modifiers: {2}", type, windowsKeyCode, modifiers);
            // TODO: Handle MessageNeeded cases here somehow.
            if (type == KeyType.RawKeyDown && windowsKeyCode == (int)Keys.F6)
            {
                browser.ShowDevTools();
            }
            return(result);
        }
Example #20
0
        //event that receive url popup
        /*public event  popup_request;*/

        bool ILifeSpanHandler.OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
        {
            //get url popup

            /* if (this.popup_request != null)
             *   this.popup_request(targetUrl);
             */
            //stop open popup window

            browser.ShowDevTools();
            newBrowser = null;
            return(true);
        }
Example #21
0
        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
#if DEBUG
            if ((int)commandId == ShowDevTools)
            {
                browser.ShowDevTools();
            }
            if ((int)commandId == CloseDevTools)
            {
                browser.CloseDevTools();
            }
#endif
            return(false);
        }
Example #22
0
        public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
        {
            switch ((Keys)windowsKeyCode)
            {
            case Keys.F12:
                browser.ShowDevTools();
                break;

            case Keys.F5:
                browser.Reload();     //此处可以添加想要实现的代码段
                break;
            }
            return(false);
        }
 public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
 {
     if (type == KeyType.KeyUp && Enum.IsDefined(typeof(Keys), windowsKeyCode))
     {
         var key = (Keys)windowsKeyCode;
         switch (key)
         {
         case Keys.F12:    //F12事件,调出开发者工具
             browser.ShowDevTools();
             break;
         }
     }
     return(false);
 }
Example #24
0
 public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
 {
     if (KeyType.RawKeyDown == type)
     {
         //if (windowsKeyCode == (int)Keys.F5)
         //{
         //    browser.Reload(); //此处可以添加想要实现的代码段
         //}
         if (windowsKeyCode == (int)Keys.F12)
         {
             browser.ShowDevTools();
         }
     }
     return(false);
 }
Example #25
0
        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters,
                                         CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            switch (commandId)
            {
            case CefMenuCommand.CustomFirst:
                browser.ShowDevTools();
                break;

            case CefMenuCommand.Reload:
                browser.GoBack();
                break;
            }
            return(false);
        }
Example #26
0
 public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
 {
     if (type == KeyType.KeyUp)
     {
         if (windowsKeyCode == (int)Keys.F5)
         {
             browser.Reload(true); //无视缓存刷新
         }
         else if (windowsKeyCode == (int)Keys.F12)
         {
             browser.ShowDevTools(); //开发者模式
         }
     }
     return(false);
 }
Example #27
0
 public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser,
                                  IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
 {
     if (commandId == (CefMenuCommand)ReloadPage)
     {
         browser.Reload();
     }
     else if (commandId == (CefMenuCommand)DevTools)
     {
         browser.ShowDevTools();
     }
     else if (commandId == (CefMenuCommand)Home)
     {
         ((MainForm)Form.ActiveForm).goHome();
     }
     return(false);
 }
Example #28
0
        public bool OnKeyEvent(IWebBrowser chromiumWebBrowser, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
        {
            if (type == KeyType.KeyUp)
            {
                switch (windowsKeyCode)
                {
                case KEY_F5:
                    browser.Reload();
                    break;

                case KEY_F12:
                    browser.ShowDevTools();
                    break;
                }
            }
            return(false);
        }
Example #29
0
        public bool OnPreKeyEvent(IWebBrowser chromiumWebBrowser, IBrowser browser, KeyType type, int windowsKeyCode,
                                  int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
        {
            const int vkF5  = 0x74;
            const int vkF11 = 0x7A;
            const int vkF12 = 0x7B;

            switch (windowsKeyCode)
            {
            case vkF5:
                if (modifiers == CefEventFlags.ControlDown)
                {
                    browser.Reload(true);     //强制忽略缓存
                }
                else
                {
                    browser.Reload();
                }
                return(true);

            case vkF11:
                MainForm._mainForm.BeginInvoke(new Action(() =>
                {
                    if (IsMaxWindow)
                    {
                        MainForm._mainForm.FormBorderStyle = FormBorderStyle.FixedSingle;
                        MainForm._mainForm.WindowState     = FormWindowState.Normal;
                    }
                    else
                    {
                        MainForm._mainForm.FormBorderStyle = FormBorderStyle.None;
                        MainForm._mainForm.WindowState     = FormWindowState.Maximized;
                    }
                    IsMaxWindow = !IsMaxWindow;
                }));
                return(true);

            case vkF12:
                browser.ShowDevTools();
                return(true);
            }

            return(false);
        }
Example #30
0
        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            int id = (int)commandId;

            if (id == ShowDevTools)
            {
                browser.ShowDevTools();
            }
            if (id == CloseDevTools)
            {
                browser.CloseDevTools();
            }
            if (id == SaveImageAs)
            {
                browser.GetHost().StartDownload(parameters.SourceUrl);
            }
            if (id == SaveLinkAs)
            {
                browser.GetHost().StartDownload(parameters.LinkUrl);
            }
            if (id == OpenLinkInNewTab)
            {
                ChromiumWebBrowser newBrowser = myForm.AddNewBrowserTab(parameters.LinkUrl, false, browser.MainFrame.Url);
            }
            if (id == CopyLinkAddress)
            {
                Clipboard.SetText(parameters.LinkUrl);
            }
            if (id == CloseTab)
            {
                myForm.InvokeOnParent(delegate() {
                    myForm.CloseActiveTab();
                });
            }
            if (id == RefreshTab)
            {
                myForm.InvokeOnParent(delegate() {
                    myForm.RefreshActiveTab();
                });
            }

            return(false);
        }
        bool IKeyboardHandler.OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
        {
#if (!RELEASE)
            if ((windowsKeyCode == this.WINDOWS_KEY_CODE_TILDE) && (type == KeyType.KeyUp))
            {
                if (this.isDevToolOpen)
                {
                    browser.CloseDevTools();
                    this.isDevToolOpen = false;
                }
                else
                {
                    this.isDevToolOpen = true;
                    browser.ShowDevTools();
                }
            }
#endif
            return(false);
        }