コード例 #1
0
ファイル: MenuHandler.cs プロジェクト: numbersint/CefSharp
        public bool OnBeforeContextMenu(IWebBrowser browser, IContextMenuParams parameters)
        {
            Console.WriteLine("Context menu opened");
            Console.WriteLine(parameters.MisspelledWord);

            return true;
        }
コード例 #2
0
 void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
 {
     //Removing existing menu item
     model.Remove(CefMenuCommand.ViewSource); // Remove "View Source" option
     model.Remove(CefMenuCommand.Print);
     //Add new custom menu items
     model.AddItem((CefMenuCommand)ViewSource, "View Page Source");
     if (parameters.TypeFlags.HasFlag(ContextMenuType.Media) && parameters.HasImageContents)
     {
         if(OsirtHelper.HasJpegExtension(parameters.SourceUrl))
         {
             model.AddItem((CefMenuCommand)ViewImageExifData, "View image EXIF data");
         }
         model.AddItem((CefMenuCommand)MenuSaveImage, "Save image");
         model.AddItem((CefMenuCommand)CopyImgLocation, "Copy image location to clipboard");
         model.AddItem((CefMenuCommand)ReverseImageSearch, "Reverse image search using TinEye");
     }
     if(OsirtHelper.IsOnYouTube(browserControl.Address))
     {
         model.AddItem((CefMenuCommand)SaveYouTubeVideo, "Extract YouTube video");
     }
     if (OsirtHelper.IsOnFacebook(browserControl.Address))
     {
         model.AddItem((CefMenuCommand)ViewFacebookId, "Show Facebook profile ID");
     }
     if(!string.IsNullOrEmpty(parameters.UnfilteredLinkUrl))
     {
         model.AddItem((CefMenuCommand)26501, "Open link in new tab");
     }
 }
コード例 #3
0
        public bool OnBeforeContextMenu(IWebBrowser browser, IContextMenuParams parameters)
        {
            if (parameters.IsEditable)
                return true;

            return false;
        }
コード例 #4
0
ファイル: MenuHandler.cs プロジェクト: gleox/CefSharp
        void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            Console.WriteLine("Context menu opened");
            Console.WriteLine(parameters.MisspelledWord);

            //To disable context mode then clear
            // model.Clear();
        }
コード例 #5
0
ファイル: MenuHandler.cs プロジェクト: zkovacs1/CefSharp
 bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, int commandId, CefEventFlags eventFlags)
 {
     if (commandId == (int)CefMenuCommand.Reload)
     {
         browser.Reload();
     }
     return false;
 }
コード例 #6
0
ファイル: MenuHandler.cs プロジェクト: zkovacs1/CefSharp
        void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            //To disable the menu then call clear
            // model.Clear();

            //Removing existing menu item
            bool removed = model.Remove((int)CefMenuCommand.ViewSource); // Remove "View Source" option

            //adding new menu item
            model.AddItem((int)CefMenuCommand.Reload, "Reload");
        }
コード例 #7
0
ファイル: MenuHandler.cs プロジェクト: rasmusgude/CefSharp
 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;
 }
コード例 #8
0
ファイル: MenuHandler.cs プロジェクト: rasmusgude/CefSharp
        void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            //To disable the menu then call clear
            // model.Clear();

            //Removing existing menu item
            //bool removed = model.Remove(CefMenuCommand.ViewSource); // Remove "View Source" option

            //Add new custom menu items
            model.AddItem((CefMenuCommand)ShowDevTools, "Show DevTools");
            model.AddItem((CefMenuCommand)CloseDevTools, "Close DevTools");
        }
コード例 #9
0
ファイル: MenuHandler.cs プロジェクト: Creo1402/CefSharp
        bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            if (commandId == (CefMenuCommand)26501)
            {
                browser.GetHost().ShowDevTools();
                return true;
            }
            if (commandId == (CefMenuCommand)26502)
            {
                browser.GetHost().CloseDevTools();
                return true;
            }

            return false;
        }
コード例 #10
0
ファイル: MenuHandler.cs プロジェクト: Creo1402/CefSharp
        void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            Console.WriteLine("Context menu opened");
            Console.WriteLine(parameters.MisspelledWord);

            if (model.Count > 0)
            {
                model.AddSeparator();
            }

            model.AddItem((CefMenuCommand)26501, "Show DevTools");
            model.AddItem((CefMenuCommand)26502, "Close DevTools");

            //To disable context mode then clear
            // model.Clear();
        }
コード例 #11
0
ファイル: MenuHandler.cs プロジェクト: huoxudong125/CefSharp
        bool IContextMenuHandler.RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
        {
            return false;

            //var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;

            ////IMenuModel is only valid in the context of this method, so need to read the values before invoking on the UI thread
            //var menuItems = GetMenuItems(model);

            //chromiumWebBrowser.Dispatcher.Invoke(() =>
            //{
            //    var menu = new ContextMenu
            //    {
            //        IsOpen = true
            //    };

            //    RoutedEventHandler handler = null;

            //    handler = (s, e) =>
            //    {
            //        menu.Closed -= handler;

            //        //If the callback has been disposed then it's already been executed
            //        //so don't call Cancel
            //        if(!callback.IsDisposed)
            //        {
            //            callback.Cancel();
            //        }
            //    };

            //    menu.Closed += handler;

            //    foreach (var item in menuItems)
            //    {
            //        menu.Items.Add(new MenuItem
            //        {
            //            Header = item.Item1,
            //            Command = new RelayCommand(() => { callback.Continue(item.Item2, CefEventFlags.None); })
            //        });
            //    }
            //    chromiumWebBrowser.ContextMenu = menu;
            //});

            //return true;
        }
コード例 #12
0
  bool  IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
  {
     if ((int)commandId == OpenLinkInNewTab)
     {
         //browser.ShowDevTools();
         OpenInNewTabContextMenu?.Invoke(this, new NewTabEventArgs(parameters.UnfilteredLinkUrl));
     }
     if ((int)commandId == CloseDevTools)
     {
         browser.CloseDevTools();
     }
     if ((int)commandId == MenuSaveImage)
     {
         DownloadImage?.Invoke(this, new DownloadImageViaContextMenuEventArgs(parameters.SourceUrl));
     }
     if ((int)commandId == ViewSource)
     {
         ViewPageSource?.Invoke(this, null);
     }
     if ((int)commandId == SaveYouTubeVideo)
     {
         DownloadYouTubeVideo?.Invoke(this, null);   //we have the address, anyway, so don't need to pass it via event args.
     }
     if ((int)commandId == ViewImageExifData)
     {
         ViewImageExif?.Invoke(this, new ExifViewerEventArgs(parameters.SourceUrl)); 
     }
     if ((int)commandId == ViewFacebookId)
     {
         ViewFacebookIdNum?.Invoke(this, EventArgs.Empty);
     }
     if ((int)commandId == CopyImgLocation)
     {
         CopyImageLocation?.Invoke(this, new ExifViewerEventArgs(parameters.SourceUrl));
     }
     if ((int)commandId == ReverseImageSearch)
     {
         ReverseImgSearch?.Invoke(this, new ExifViewerEventArgs(parameters.SourceUrl));
     }
     return false;
 }
コード例 #13
0
ファイル: CefSharpWrapper.cs プロジェクト: gro-ove/actools
        public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model,
                IRunContextMenuCallback callback) {
            callback.Dispose();

            Application.Current.Dispatcher.Invoke(() => {
                var menu = new ContextMenu {
                    Items = {
                        new MenuItem {
                            Header = "Back",
                            Command = new DelegateCommand(browser.GoBack, () => browser.CanGoBack)
                        },
                        new MenuItem {
                            Header = "Forward",
                            Command = new DelegateCommand(browser.GoForward, () => browser.CanGoForward)
                        },
                        new MenuItem {
                            Header = "Refresh",
                            Command = new DelegateCommand(() => browser.Reload(true))
                        },
                        new Separator(),
                        new MenuItem {
                            Header = "Select All",
                            Command = new DelegateCommand(() => browser.FocusedFrame.SelectAll())
                        },
                        new MenuItem {
                            Header = "Open Page In Default Browser",
                            Command = new DelegateCommand<string>(WindowsHelper.ViewInBrowser),
                            CommandParameter = frame.Url
                        },
                    }
                };

                menu.IsOpen = true;
            });
            
            return true;
        }
コード例 #14
0
        public override bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            if (base.OnContextMenuCommand(browserControl, browser, frame, parameters, commandId, eventFlags))
            {
                return(true);
            }

            switch (commandId)
            {
            case CefMenuCommand.Reload:
                form.InvokeAsyncSafe(form.ReloadToTweetDeck);
                return(true);

            case MenuSettings:
                form.InvokeAsyncSafe(form.OpenSettings);
                return(true);

            case MenuAbout:
                form.InvokeAsyncSafe(form.OpenAbout);
                return(true);

            case MenuPlugins:
                form.InvokeAsyncSafe(form.OpenPlugins);
                return(true);

            case MenuMute:
                form.InvokeAsyncSafe(ToggleMuteNotifications);
                return(true);

            case MenuOpenTweetUrl:
                OpenBrowser(form, Context.Chirp.TweetUrl);
                return(true);

            case MenuCopyTweetUrl:
                SetClipboardText(form, Context.Chirp.TweetUrl);
                return(true);

            case MenuScreenshotTweet:
                form.InvokeAsyncSafe(form.TriggerTweetScreenshot);
                return(true);

            case MenuOpenQuotedTweetUrl:
                OpenBrowser(form, Context.Chirp.QuoteUrl);
                return(true);

            case MenuCopyQuotedTweetUrl:
                SetClipboardText(form, Context.Chirp.QuoteUrl);
                return(true);

            case MenuWriteApplyROT13:
                form.InvokeAsyncSafe(form.ApplyROT13);
                return(true);

            case MenuSearchInColumn:
                string query = parameters.SelectionText;
                form.InvokeAsyncSafe(() => form.AddSearchColumn(query));
                DeselectAll(frame);
                break;
            }

            return(false);
        }
コード例 #15
0
 public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
 {
     return(false);
 }
コード例 #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);
 }
コード例 #17
0
ファイル: CefSharpWrapper.cs プロジェクト: WildGenie/actools
        public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model,
                                   IRunContextMenuCallback callback)
        {
            callback.Dispose();

            ActionExtension.InvokeInMainThread(() => {
                var menu = new ContextMenu {
                    Items =
                    {
                        new MenuItem {
                            Header  = "Back",
                            Command = new DelegateCommand(browser.GoBack, () => browser.CanGoBack)
                        },
                        new MenuItem {
                            Header  = "Forward",
                            Command = new DelegateCommand(browser.GoForward, () => browser.CanGoForward)
                        },
                        new MenuItem {
                            Header  = "Refresh",
                            Command = new DelegateCommand(() => browser.Reload(true))
                        },
                        new Separator(),
                        new MenuItem {
                            Header  = "Select All",
                            Command = new DelegateCommand(() => browser.FocusedFrame.SelectAll())
                        },
                        new MenuItem {
                            Header           = "Open Page In Default Browser",
                            Command          = new DelegateCommand <string>(WindowsHelper.ViewInBrowser),
                            CommandParameter = frame.Url
                        },
                    }
                };

                menu.IsOpen = true;
            });

            return(true);
        }
コード例 #18
0
 public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
 {
     model.Clear();
     model.AddItem(CefMenuCommand.Copy, "Copy");
 }
コード例 #19
0
        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            if (commandId == (CefMenuCommand)26501)
            {
                browser.GetHost().ShowDevTools();
                return(true);
            }
            if (commandId == (CefMenuCommand)26502)
            {
                browser.GetHost().CloseDevTools();
                return(true);
            }
            if (commandId == CefMenuCommand.Back)
            {
                browser.GoBack();
                return(true);
            }
            if (commandId == CefMenuCommand.Forward)
            {
                browser.GoForward();
                return(true);
            }
            if (commandId == CefMenuCommand.Print)
            {
                browser.GetHost().Print();
                return(true);
            }
            if (commandId == CefMenuCommand.ViewSource)
            {
                browser.FocusedFrame.ViewSource();
                return(true);
            }

            return(false);
        }
コード例 #20
0
ファイル: MenuHandler.cs プロジェクト: gleox/CefSharp
 bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
 {
     return false;
 }
コード例 #21
0
        public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            if (model.Count > 0)
            {
                model.AddSeparator();
            }

            var mode = NativeMethod.IsOneMinuteMode ? 5 : 1;

            model.AddItem((CefMenuCommand)26501, $"{mode}分モードに変更");
        }
コード例 #22
0
        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            // React to the first ID (add to target method)

            if (commandId > (CefMenuCommand)initial_command)
            {
                if (commandId == ((CefMenuCommand)initial_command + 1))
                {
                    SimpleInputForm newTargetForm = new SimpleInputForm("New Target");
                    //newTargetForm.ShowDialog(resultsForm);
                    resultsForm.Invoke((MethodInvoker) delegate
                    {
                        // Running on the UI thread
                        newTargetForm.ShowDialog();
                    });
                    if (newTargetForm.DialogResult == DialogResult.OK)
                    {
                        if (newTargetForm.title != "")
                        {
                            TreeNode target   = new TreeNode(newTargetForm.title);
                            TreeNode treeNode = new TreeNode("From Browser");
                            treeNode.Nodes.Add(new TreeNode(parameters.SelectionText));
                            target.Nodes.Add(treeNode);
                            Main_Instance.Instance.Workspace.TargetTreeView.Nodes.Add(target);
                        }
                        //Main_Instance.Instance.Workspace.
                    }
                }
                else
                {
                    int index = (int)commandId - initial_command - 2;
                    if (Main_Instance.Instance.Workspace.TargetTreeView.Nodes[index].Nodes.ContainsKey("From Browser"))
                    {
                        resultsForm.Invoke((MethodInvoker) delegate
                        {
                            Main_Instance.Instance.Workspace.TargetTreeView.Nodes[index].Nodes["From Browser"].Nodes.Add(new TreeNode(parameters.SelectionText));
                            Main_Instance.Instance.Workspace.ReloadTargetsFromTreeView();
                        });
                    }
                    else
                    {
                        TreeNode treeNode = new TreeNode("From Browser");
                        treeNode.Nodes.Add(new TreeNode(parameters.SelectionText));
                        resultsForm.Invoke((MethodInvoker) delegate
                        {
                            // Running on the UI thread
                            Main_Instance.Instance.Workspace.TargetTreeView.Nodes[index].Nodes.Add(treeNode);
                            Main_Instance.Instance.Workspace.ReloadTargetsFromTreeView();
                        });
                    }
                }
                //browser.GetHost().ShowDevTools();
                return(true);
            }

            // Any new item should be handled through a new if statement


            // Return false should ignore the selected option of the user !
            return(false);
        }
コード例 #23
0
        public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            // Remove any existent option using the Clear method of the model
            //
            //model.Clear();

            Console.WriteLine("Context menu opened !");

            // You can add a separator in case that there are more items on the list
            if (model.Count > 0)
            {
                model.AddSeparator();
            }


            // Add a new item to the list using the AddItem method of the model
            model.AddSubMenu((CefMenuCommand)initial_command, "Add to Target");
            IMenuModel target_menu = model.GetSubMenu((CefMenuCommand)initial_command);

            target_menu.AddItem((CefMenuCommand)initial_command + 1, "New");
            int i = 2;

            foreach (Target target in Main_Instance.Instance.Workspace.Targets)
            {
                target_menu.AddItem((CefMenuCommand)initial_command + i, target.Title);
                i++;
            }

            //model.AddItem((CefMenuCommand)26502, "Close DevTools");

            // Add a separator
            //model.AddSeparator();

            // Add another example item
            // model.AddItem((CefMenuCommand)26503, "Display alert message");
        }
コード例 #24
0
 public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
 {
     return(false);
     //  throw new NotImplementedException();
 }
コード例 #25
0
 public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
 {
     //  throw new NotImplementedException();
     return(false);
 }
コード例 #26
0
 public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
 {
     //  清除上下文菜单
     model.Clear();
     //  throw new NotImplementedException();
 }
コード例 #27
0
        public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            if (model.Count > 0)
            {
                model.AddSeparator();
            }

            model.AddItem((CefMenuCommand)26501, "Show DevTools");
            model.AddItem((CefMenuCommand)26502, "Close DevTools");
        }
コード例 #28
0
 public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters,
     CefMenuCommand commandId, CefEventFlags eventFlags)
 {
     return true;
 }
コード例 #29
0
 public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters,
     IMenuModel model)
 {
     return;
 }
コード例 #30
0
        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            if (commandId == (CefMenuCommand)26501)
            {
                if (NativeMethod.IsOneMinuteMode)
                {
                    NativeMethod.IsOneMinuteMode = false;
                    browserControl.Load("http://wars.fm/reversi?lang=ja");
                }
                else
                {
                    NativeMethod.IsOneMinuteMode = true;
                    browserControl.Load("http://wars.fm/reversi1?lang=ja");
                }
                return(true);
            }

            return(false);
        }
コード例 #31
0
        bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            if (commandId == (CefMenuCommand)26501)
            {
                if (!url.Equals(""))
                {
                    Dispatcher.Invoke(() =>
                    {
                        Console.WriteLine(parameters.SelectionText);
                        ApplicationCommands.New.Execute(
                            new OpenTabCommandParameters(url, "New tab", "#FFF9F9F9"), this);

                    });
                    return true;
                }
            }
            if (commandId == (CefMenuCommand) 26502)
            {
                SaveFileDialog dialog = new SaveFileDialog();
                dialog.FileName = "image.png";
                dialog.Filter = "Png image (*.png)|*.png|Gif Image (*.gif)|*.gif|JPEG image (*.jpg)|*.jpg";

                var result = dialog.ShowDialog();
                if (result == DialogResult.OK)
                {
                    Console.WriteLine("writing to: " + dialog.FileName);

                    var wClient = new WebClient();
                    wClient.DownloadFile(img, dialog.FileName);
                }
            }

            return false;
        }
コード例 #32
0
        void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            // To disable the menu then call clear
            model.Clear();
            // Removing existing menu item
            // model.Remove(CefMenuCommand.ViewSource); // Remove "View Source" option
            // Add new custom menu items
            // model.AddItem((CefMenuCommand)CloseDevTools, "Close DevTools");

            string selectionText = parameters.SelectionText;
            bool   selectedText  = !selectionText.Equals("");

            // 不在input中 勾选内容 右键
            if (!parameters.IsEditable && selectedText)
            {
                model.AddItem(CefMenuCommand.Copy, "复制 (Ctrl+C)");
            }
            // 在input中
            else if (parameters.IsEditable)
            {
                model.AddItem(CefMenuCommand.Cut, "剪切 (Ctrl+X)");
                model.AddItem(CefMenuCommand.Copy, "复制 (Ctrl+C)");
                model.AddItem(CefMenuCommand.Paste, "粘贴 (Ctrl+V)");
                model.AddItem(CefMenuCommand.Delete, "删除 (Delete)");
                model.AddSeparator();
                model.AddItem(CefMenuCommand.SelectAll, "全选 (Ctrl+A)");
                if (!selectedText)
                {
                    // 若没有勾选内容,则禁止点击 Cut Copy
                    model.SetEnabled(CefMenuCommand.Cut, false);
                    model.SetEnabled(CefMenuCommand.Copy, false);
                    model.SetEnabled(CefMenuCommand.Delete, false);
                }
            }
            else if (parameters.MediaType == ContextMenuMediaType.Image)
            {
                model.AddItem((CefMenuCommand)SaveImage, "下载图片");
            }
            else if (parameters.UnfilteredLinkUrl != "")
            {
                model.AddItem((CefMenuCommand)CopyLink, "复制链接");
                // 当 LinkUrl 是 JavaScript:; 的时候,下载会出问题
                if (!Regex.IsMatch(parameters.UnfilteredLinkUrl, @"(?s)(?i)^(javascript:)"))
                {
                    model.AddItem((CefMenuCommand)SaveLink, "下载链接内容");
                    model.AddItem((CefMenuCommand)LinkOpenDefaultBrowser, "默认浏览器打开");
                }
            }
            else
            {
                if (_showReload)
                {
                    model.AddItem(CefMenuCommand.ReloadNoCache, "刷新 (ReloadNoCache)");
                }
                model.AddItem((CefMenuCommand)ShowDevTools, "检查 (ShowDevTools)");
            }
        }
コード例 #33
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);
        }
コード例 #34
0
        public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            //_last_command = 0;
            // Remove any existent option using the Clear method of the model
            //model.Clear();
            //model.AddItem(CefMenuCommand.Back, "Back");
            //model.AddItem(CefMenuCommand.Forward, "Forward");
            //model.AddItem(CefMenuCommand.Print, "Print...");
            //model.AddItem(CefMenuCommand.ViewSource, "View Page Source");
            model.Remove(CefMenuCommand.Copy);
            // You can add a separator in case that there are more items on the list
            if (model.Count > 0)
            {
                model.AddSeparator();
            }

            model.AddItem((CefMenuCommand)ContextMenuCommand.CMD_COPY, "Copy");
            model.AddSeparator();
            // Add a new item to the list using the AddItem method of the model
            model.AddItem((CefMenuCommand)ContextMenuCommand.CMD_MY_COPY, "Only Copy");
            // Add a separator
            model.AddSeparator();
            foreach (MenuBrowser menuBrowser in _lstMenuBrowser)
            {
                string nname;
                if (string.IsNullOrEmpty(menuBrowser.Shortcut))
                {
                    nname = menuBrowser.Name;
                }
                else
                {
                    nname = menuBrowser.Name + "  [" + menuBrowser.Shortcut + "]";
                }
                model.AddItem((CefMenuCommand)menuBrowser.Command, nname);
                model.AddSeparator();
            }
            //model.AddItem((CefMenuCommand)ContextMenuCommand.CMD_TRANSLATE_EN_TO_AR, "Translate EN-> AR");
            //model.AddSeparator();
            //model.AddItem((CefMenuCommand)ContextMenuCommand.CMD_TRANSLATE_DE_TO_AR, "Translate DE-> AR");
        }
コード例 #35
0
 public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
 {
     if (commandId == CefMenuCommand.Copy)
     {
         Clipboard.SetText(parameters.SelectionText);
         return(true);
     }
     return(false);
 }
コード例 #36
0
        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            if (commandId == CefMenuCommand.Back)
            {
                if (browser.CanGoBack)
                {
                    browser.GoBack();
                }
                return(true);
            }
            else if (commandId == CefMenuCommand.Forward)
            {
                if (browser.CanGoForward)
                {
                    browser.GoForward();
                }
                return(true);
            }
            else if (commandId == CefMenuCommand.Print)
            {
                browser.Print();
                return(true);
            }
            else if (commandId == CefMenuCommand.ViewSource)
            {
                browserControl.ViewSource();
                return(true);
            }
            else if (commandId == (CefMenuCommand)ContextMenuCommand.CMD_MY_COPY) // mycopy
            {
                _frmMain.last_command           = ContextMenuCommand.CMD_MY_COPY;
                _frmMain.isCopyWithoutTranslate = true;
                string oldClipboard = Clipboard.GetText();
                //browserControl.Copy();
                //Application.DoEvents();
                //_frmMain.isCopyWithoutTranslate = true;
                //frame.Copy();
                short i = 0;
                while (i <= 8)
                {
                    frame.Copy();
                    browserControl.ExecuteScriptAsync("document.execCommand(\"copy\");");
                    string tmpClipboard = Clipboard.GetText();
                    if (tmpClipboard != oldClipboard)
                    {
                        break;
                    }
                    Thread.Sleep(1);
                    i++;
                }

                return(true);
            }

            else if (commandId == (CefMenuCommand)ContextMenuCommand.CMD_COPY) //copy
            {
                _frmMain.last_command           = ContextMenuCommand.CMD_COPY;
                _frmMain.isCopyWithoutTranslate = false;
                //_browser.Copy();
                frame.Copy();
                //_frmMain.isCopyWithoutTranslate = false;
                return(true);
            }
            else
            {
                foreach (MenuBrowser l_menuBrowser in _lstMenuBrowser)
                {
                    if ((CefMenuCommand)l_menuBrowser.Command == commandId)
                    {
                        _frmMain.last_command           = l_menuBrowser.Command;
                        _frmMain.isCopyWithoutTranslate = true;
                        _browser.Copy();
                        return(true);
                    }
                }
            }

            // Return false should ignore the selected option of the user !
            //return false;
            return(true);
        }
コード例 #37
0
        void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            //To disable the menu then call clear
            model.Clear();

            //Removing existing menu item
            // Remove "View Source" option
            bool removed = model.Remove(CefMenuCommand.ViewSource);

            //Add new custom menu items
            model.AddItem((CefMenuCommand)ShowDevTools, "Show DevTools");
            model.AddItem((CefMenuCommand)CloseDevTools, "Close DevTools");
        }
コード例 #38
0
 public bool OnBeforeContextMenu(IWebBrowser browser, IContextMenuParams param)
 {
     return false;
 }
コード例 #39
0
 public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
 {
     model.Clear();
 }
コード例 #40
0
        void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            Console.WriteLine("Context menu opened");
            Console.WriteLine(parameters.MisspelledWord);

            if (model.Count > 0)
            {
                model.AddSeparator();
            }
            url = parameters.LinkUrl;
           
            model.Clear();
            if (!url.Equals(""))
            model.AddItem((CefMenuCommand)26501, "Open link in new tab");
            
            if (parameters.MediaType == ContextMenuMediaType.Image)
            {
                img = parameters.SourceUrl;
                model.AddItem((CefMenuCommand) 26502, "Save image");
            }

        }
コード例 #41
0
 public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
 {
     return(false);
 }
コード例 #42
0
 public void OnBeforeContextMenu(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model) =>
 model.Clear();
コード例 #43
0
        public override void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            bool isSelecting = parameters.TypeFlags.HasFlag(ContextMenuType.Selection);
            bool isEditing   = parameters.TypeFlags.HasFlag(ContextMenuType.Editable);

            model.Remove(CefMenuCommand.Back);
            model.Remove(CefMenuCommand.Forward);
            model.Remove(CefMenuCommand.Print);
            model.Remove(CefMenuCommand.ViewSource);
            RemoveSeparatorIfLast(model);

            if (isSelecting)
            {
                if (isEditing)
                {
                    model.AddSeparator();
                    model.AddItem(MenuWriteApplyROT13, "Apply ROT13");
                }

                model.AddSeparator();
            }

            base.OnBeforeContextMenu(browserControl, browser, frame, parameters, model);

            if (isSelecting && !isEditing && TwitterUtils.IsTweetDeckWebsite(frame))
            {
                InsertSelectionSearchItem(model, MenuSearchInColumn, "Search in a column");
            }

            if (Context.Types.HasFlag(ContextInfo.ContextType.Chirp) && !isSelecting && !isEditing)
            {
                model.AddItem(MenuOpenTweetUrl, "Open tweet in browser");
                model.AddItem(MenuCopyTweetUrl, "Copy tweet address");
                model.AddItem(MenuScreenshotTweet, "Screenshot tweet to clipboard");

                if (!string.IsNullOrEmpty(Context.Chirp.QuoteUrl))
                {
                    model.AddSeparator();
                    model.AddItem(MenuOpenQuotedTweetUrl, "Open quoted tweet in browser");
                    model.AddItem(MenuCopyQuotedTweetUrl, "Copy quoted tweet address");
                }

                model.AddSeparator();
            }

            if (!isSelecting && !isEditing)
            {
                AddSeparator(model);

                IMenuModel globalMenu = model.Count == 0 ? model : model.AddSubMenu(MenuGlobal, Program.BrandName);

                globalMenu.AddItem(CefMenuCommand.Reload, TitleReloadBrowser);
                globalMenu.AddCheckItem(MenuMute, TitleMuteNotifications);
                globalMenu.SetChecked(MenuMute, Config.MuteNotifications);
                globalMenu.AddSeparator();

                globalMenu.AddItem(MenuSettings, TitleSettings);
                globalMenu.AddItem(MenuPlugins, TitlePlugins);
                globalMenu.AddItem(MenuAbout, TitleAboutProgram);

                AddDebugMenuItems(globalMenu);
            }

            RemoveSeparatorIfLast(model);

            form.InvokeAsyncSafe(form.AnalyticsFile.BrowserContextMenus.Trigger);
        }
コード例 #44
0
 public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
 {
     if (model.Count > 0)
     {
         model.Clear();
     }
     if (IsAboutMenu)
     {
         model.AddItem((CefSharp.CefMenuCommand) 222, "源码");
         model.AddItem((CefSharp.CefMenuCommand) 223, "调试");
         model.AddItem((CefSharp.CefMenuCommand) 224, "刷新");
     }
 }
コード例 #45
0
 public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters,
     IMenuModel model, IRunContextMenuCallback callback)
 {
     return true;
 }
コード例 #46
0
        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            //当前浏览器对象,通过它获取所在的Form窗体
            ChromiumWebBrowser cwb = (ChromiumWebBrowser)browserControl;

            System.Windows.Forms.Form    form   = null;
            System.Windows.Forms.Control parent = cwb.Parent;
            while (!(parent is System.Windows.Forms.Form))
            {
                parent = cwb.Parent;
            }
            form = (System.Windows.Forms.Form)parent;
            //处理右键事件
            int comid = (int)commandId;

            //刷新页面
            if (comid == 222)
            {
                cwb.ViewSource();
            }
            //打开调试窗,F12
            if (comid == 223)
            {
                cwb.ShowDevTools();
            }
            //刷新页面
            if (comid == 224)
            {
                cwb.Reload();
            }

            return(false);
        }
コード例 #47
0
ファイル: MenuHandler.cs プロジェクト: bjarteskogoy/CefSharp
 void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
 {
     //To disable the menu then call clear
     // model.Clear();
 }
 public bool OnBeforeContextMenu(IWebBrowser browser, IContextMenuParams param)
 {
     return(false);
 }
コード例 #49
0
 bool IContextMenuHandler.RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
 {
     return false;
 }
コード例 #50
0
ファイル: Form1.cs プロジェクト: hamxiaoz/webview-winforms
 public bool OnBeforeContextMenu(IWebBrowser browser, IContextMenuParams p)
 {
     // Return false if you want to disable the context menu.
     return false;
 }
コード例 #51
0
 public bool OnContextMenuCommand(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags) => false;
コード例 #52
0
 public override void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
 {
     model.Clear();
     base.OnBeforeContextMenu(browserControl, browser, frame, parameters, model);
     AddDebugMenuItems(model);
 }
コード例 #53
0
 public bool RunContextMenu(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback) => false;
コード例 #54
0
ファイル: MenuHandler.cs プロジェクト: jex518/CefSharp
 public bool OnBeforeContextMenu(IWebBrowser browser, IFrame frame, IContextMenuParams parameters)
 {
     // Return false if you want to disable the context menu.
     return true;
 }