当前位置: 首页 > news >正文

浏览器CEFSharp+X86+win7 之 浏览器右键菜单(六)

代码

using CefSharp.WinForms;
using CefSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CyberWin.NET.ApplicationVOS109.CyberWinPHP.Cyber_Dialog;namespace CyberWin.NET.ApplicationVOS109.CyberWinPHP.BrowserHandle
{internal class 未来之窗_MenuHandler : IContextMenuHandler{private const int ShowDevTools = 26501;private const int CloseDevTools = 26502;private const int cyberwin_menu_id_关于我们 = 96501;private const int cyberwin_menu_id_支持中心 = 96502;private const int cyberwin_menu_id_复制 = 96503;private const int cyberwin_menu_id_粘贴 = 96504;private const int cyberwin_menu_id_查找 = 96505;private const int cyberwin_menu_id_剪切 = 96506;private const int cyberwin_menu_id_删除 = 96507;private const int cyberwin_menu_id_新窗口打开 = 96508;private const int cyberwin_menu_id_复制图片链接 = 96509;private const int cyberwin_menu_id_图片_浏览图片 = 96510;private const int cyberwin_menu_id_开发 = 99510;private const int cyberwin_menu_id_打印 = 99510;private const int cyberwin_menu_id_隐藏模块栏 = 96511;private const int cyberwin_menu_id_显示模块栏 = 96512;private const int cyberwin_menu_id_放大 = 1000;private const int cyberwin_menu_id_缩小 = 1001;private const int cyberwin_menu_id_人人可开发 = 1002;private const int cyberwin_menu_id_东方仙盟 = 1003;public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model){//parameters.LinkUrl//  CyberWin.CSHARP.YNWLZC.WebFrame.CyberPHP.CyberWinPC.Helper.Logger.Log_Engine.write_log("系统", "菜单", "链接" + parameters.LinkUrl);//  CyberWin.CSHARP.YNWLZC.WebFrame.CyberPHP.CyberWinPC.Helper.Logger.Log_Engine.write_log("系统", "菜单", "媒体类型" + parameters.MediaType.ToString());//  CyberWin.CSHARP.YNWLZC.WebFrame.CyberPHP.CyberWinPC.Helper.Logger.Log_Engine.write_log("系统", "菜单", "可编辑" + parameters.IsEditable.ToString());//  CyberWin.CSHARP.YNWLZC.WebFrame.CyberPHP.CyberWinPC.Helper.Logger.Log_Engine.write_log("系统", "菜单", "SourceUrl" + parameters.SourceUrl.ToString());//parameters.//throw new NotImplementedException();// return false;/*Console.WriteLine("Context menu opened");Console.WriteLine(parameters.MisspelledWord);if (model.Count > 0){model.AddSeparator();}CefMenuCommand c = new CefMenuCommand(){};model.AddItem((CefMenuCommand)26501, "Show DevTools");model.AddItem((CefMenuCommand)26502, "Close DevTools");model.AddItem((CefMenuCommand)26501, "Show DevTools");*///To disable context mode then clear// model.Clear();//  CyberWin.CSHARP.YNWLZC.WebFrame.CyberPHP.model.Clear();model.AddItem((CefMenuCommand)cyberwin_menu_id_剪切, "剪切(&T)");model.AddItem((CefMenuCommand)cyberwin_menu_id_复制, "复制(&C)");model.AddItem((CefMenuCommand)cyberwin_menu_id_粘贴, "粘贴(&P)");model.AddSeparator();model.AddItem((CefMenuCommand)cyberwin_menu_id_删除, "删除(&D)");//2018-2-36model.AddSeparator();/**    private const int cyberwin_menu_id_新窗口打开 = 96508;private const int cyberwin_menu_id_复制图片链接 = 96509;private const int cyberwin_menu_id_图片_浏览图片 = 96510;*/string url = parameters.LinkUrl;if (url.Length > 2){model.AddItem((CefMenuCommand)cyberwin_menu_id_新窗口打开, "在新标签页打开(&N)");}string cyber_媒体类型 = parameters.MediaType.ToString();if (cyber_媒体类型 == "Image"){model.AddItem((CefMenuCommand)cyberwin_menu_id_复制图片链接, "复制图片链接(&O)");model.AddItem((CefMenuCommand)cyberwin_menu_id_图片_浏览图片, "打开图片(&I)");}//设置复制string cyber_选择文本 = parameters.SelectionText;if (cyber_选择文本.Length < 1){model.SetEnabled((CefMenuCommand)cyberwin_menu_id_剪切, false);model.SetEnabled((CefMenuCommand)cyberwin_menu_id_复制, false);model.SetEnabled((CefMenuCommand)cyberwin_menu_id_删除, false);}if (parameters.IsEditable == false){model.SetEnabled((CefMenuCommand)cyberwin_menu_id_粘贴, false);}}else{model.Clear();}//if(browserControl.)// model.AddItem((CefMenuCommand)CefMenuCommand.Find, "-");//   model.AddItem((CefMenuCommand)cyberwin_menu_id_查找, "关于我们");//  model.AddSeparator();//  model.AddItem((CefMenuCommand)cyberwin_menu_id_隐藏模块栏, "隐藏模块栏");//   model.AddItem((CefMenuCommand)cyberwin_menu_id_显示模块栏, "显示模块栏");model.AddSeparator();model.AddItem((CefMenuCommand) cyberwin_menu_id_放大, "放大");model.AddItem((CefMenuCommand) cyberwin_menu_id_缩小, "缩小");model.AddSeparator();model.AddItem((CefMenuCommand) cyberwin_menu_id_人人可开发, "开发工具");model.AddItem((CefMenuCommand)cyberwin_menu_id_东方仙盟, "东方仙盟");model.AddItem((CefMenuCommand)cyberwin_menu_id_关于我们, "关于我们");model.AddItem((CefMenuCommand)cyberwin_menu_id_支持中心, "支持中心");//取消开发model.AddItem((CefMenuCommand)cyberwin_menu_id_开发, "开发");}public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags){//throw new NotImplementedException();/*if ((int)commandId == ShowDevTools){browser.ShowDevTools();}if ((int)commandId == CloseDevTools){browser.CloseDevTools();}*/if ((int)commandId == cyberwin_menu_id_关于我们){// browser.ShowDevTools();AboutBox1 a = new  AboutBox1();a.ShowDialog();}if ((int)commandId == cyberwin_menu_id_支持中心){// browser.ShowDevTools();browserControl.Load("http://support.ynwlzc.cn/");}if ((int)commandId == cyberwin_menu_id_隐藏模块栏){// browser.ShowDevTools();//form3}switch ((int)commandId){case cyberwin_menu_id_剪切:{// control.ShowFind();// control.Browser.Cut();browserControl.Cut();}break;case cyberwin_menu_id_复制:{// control.ShowFind();browserControl.Copy();}break;case cyberwin_menu_id_粘贴:{// control.ShowFind();browserControl.Paste();}break;case cyberwin_menu_id_删除:{// control.ShowFind();browserControl.Delete();}break;case cyberwin_menu_id_查找:{//browserControl.sh();}break;case cyberwin_menu_id_开发:{//browserControl.sh();frm_inputBox 输入框 = new frm_inputBox("请输入超级密码","");if (输入框.ShowDialog() == DialogResult.OK){string 密码 = 输入框.valueI;MessageBox.Show(密码);if (密码.Equals("1")){// browserControl.ShowDevTools();}else{}}}break;//2018-2-26case cyberwin_menu_id_新窗口打开:{//browserControl.sh();//    browserControl.Load(parameters.LinkUrl);var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;chromiumWebBrowser.Invoke(new Action(() =>{var owner = chromiumWebBrowser.FindForm();// as Cyber_Form_BrowserMu;if (owner != null){var control = new Control();control.Dock = DockStyle.Fill;control.CreateControl();//owner.AddTab(control, targetUrl);// owner.AddTab(parameters.LinkUrl);//  var rect = control.ClientRectangle;//  windowInfo.SetAsChild(control.Handle, rect.Left, rect.Top, rect.Right, rect.Bottom);return;}}));browserControl.Load(parameters.LinkUrl);}break;case cyberwin_menu_id_复制图片链接:{//browserControl.sh();Clipboard.SetDataObject(parameters.SourceUrl, true);}break;case cyberwin_menu_id_图片_浏览图片:{//browserControl.sh();browserControl.Load(parameters.SourceUrl);}break;case cyberwin_menu_id_放大:{var zoom = browserControl.GetZoomLevelAsync().ConfigureAwait(false).GetAwaiter().GetResult();browserControl.SetZoomLevel(zoom + 0.5);}break;case cyberwin_menu_id_缩小:{var zoom = browserControl.GetZoomLevelAsync().ConfigureAwait(false).GetAwaiter().GetResult();browserControl.SetZoomLevel(zoom - 0.5);}break;case cyberwin_menu_id_东方仙盟:{browserControl.Load("http://app.ynwlzc.net/");}break;case cyberwin_menu_id_人人可开发:{browserControl.Load("http://51.onelink.ynwlzc.net/o2o/index.php/appwork/aOg");}break;}return false;}public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame){//throw new NotImplementedException();//  return false;}public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback){// throw new NotImplementedException();return false;}}
}

用途

1. 提供便捷操作

  • 页面交互:用户在浏览网页时,通过右键菜单可快速执行常见操作。例如,在链接上右键,能选择 “在新标签页中打开”,无需手动复制粘贴链接到新标签栏,极大节省时间。对于图片,右键菜单提供 “另存为” 选项,方便用户保存感兴趣的图片,满足资料收集或个人喜好需求。
  • 文本处理:当选中一段文本后,右键菜单展示 “复制”“全选” 等功能。在需要引用网页内容时,“复制” 功能一键获取文本,提高信息提取效率。“全选” 则在处理较长篇幅文本时极为实用,方便后续整体操作。

2. 辅助功能操作

  • 打印与分享:右键菜单中的 “打印” 选项,允许用户直接将当前页面输出到打印机,满足文档打印需求。“分享” 功能可将页面链接分享至社交平台或即时通讯工具,方便用户与他人交流感兴趣的内容,扩大信息传播范围。
  • 查看页面信息:“查看页面源代码” 选项让开发人员或技术爱好者能够深入了解网页架构和代码实现,有助于学习和调试。“检查元素” 功能更是前端开发人员的得力助手,可实时查看和修改页面元素的样式、属性及脚本,加速开发与调试进程。

3. 针对特定应用定制

  • 应用内操作:基于 CefSharp 开发的应用程序,可根据自身业务需求定制右键菜单。如在线文档编辑应用,右键菜单可添加 “插入表格”“设置字体格式” 等功能,使操作更贴近用户在专业软件中的习惯,提升用户体验。
  • 数据交互:对于需要与数据库或后端服务交互的应用,右键菜单可触发数据相关操作。在商品展示应用中,右键商品图片可弹出 “添加到购物车”“查看商品详情” 等选项,直接实现数据的增删查改等操作,增强应用的交互性与功能性。

好处

1. 提升用户体验

  • 操作便捷性:右键菜单将常用功能集中展示,用户无需在复杂界面中寻找特定按钮,降低操作难度,提升操作流畅度。对于新手用户,这种直观的操作方式更容易上手,减少学习成本。
  • 个性化操作:用户可根据自身需求和习惯,利用右键菜单进行个性化操作。如自定义页面缩放比例、选择不同的文本编码等,满足不同用户的多样化需求,增强用户对浏览器的掌控感。

2. 增强应用功能

  • 功能扩展:通过定制右键菜单,开发人员能为应用添加独特功能,使其区别于其他同类产品。在地图应用中,右键点击地图可弹出 “标记地点”“测量距离” 等功能,丰富应用功能,提升应用的竞争力。
  • 无缝集成:右键菜单与浏览器界面自然融合,用户在使用时感觉功能是浏览器的固有部分,不会破坏应用整体的视觉和操作体验。这种无缝集成使用户在操作过程中不会因功能突兀而产生困扰,提高应用的易用性。

3. 提高开发效率

  • 复用性:CefSharp 提供了相对成熟的右键菜单框架,开发人员无需从头开发右键菜单功能,节省开发时间和精力。可基于已有框架进行定制开发,将更多时间投入到核心业务功能的实现上。
  • 灵活性:开发人员可根据应用的不同场景和需求,灵活定制右键菜单的内容和行为。无论是简单的文本处理应用还是复杂的多媒体应用,都能通过定制右键菜单满足特定功能需求,提升开发的灵活性和适应性。

阿雪技术观


在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者。无论是分享代码、撰写技术博客,还是参与开源项目维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基生命,为科技进步添砖加瓦。

Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets, hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology.

http://www.dtcms.com/a/325002.html

相关文章:

  • Mysql笔记-存储过程与存储函数
  • vulnhub-doubletrouble靶场攻略
  • Linux C文件操作函数
  • 谷歌DeepMind发布Genie 3:通用型世界模型,可生成前所未有多样化的交互式虚拟环境
  • C++移动语义、完美转发及编译器优化零拷贝
  • PostgreSQL 批量COPY导入优化参数配置
  • 近红外与可见光图像融合的多种方法实现
  • OpenAI正式发布GPT-5:迈向AGI的关键一步
  • Java基础-多线程
  • lesson34:深入理解Python线程:从基础到实战优化
  • hysAnalyser --- 支持文件转播UDP/RTP实时流功能
  • CompletableFuture实现Excel 多个sheet页批量导出
  • 【数据分析】循环移位岭回归分析:光遗传学冻结行为模式研究
  • 【PyTorch】单目标检测项目部署
  • MPLS的基本工作原理
  • AI玩具新浪潮:百亿资本涌入,情感计算重塑陪伴经济
  • WAIC2025逛展分享·AI鉴伪技术洞察“看不见”的伪造痕迹
  • JAVA中关于Stream流的使用
  • 虚拟主机示例
  • vuhub drippingblues靶场攻略
  • Windows环境下私有化部署Dify,并接入通义千问模型
  • UNet改进(31):基于Adaptive Attention的UNet设计与实践
  • 基于Spring SSE构建实时监控系统
  • Python 的列表 list 和元组 tuple 有啥本质区别?啥时候用谁更合适?
  • TC39x STM(System Timer)学习记录
  • 压力测试等工具源码包编译及使用方法
  • Vulnhub doubletrouble 靶场复现 详细攻略
  • Knuth‘s TwoSum Algorithm 原理详解
  • MyBatis 核心入门:从概念到实战,一篇掌握简单增删改查
  • 【东枫科技】FR3 可扩展测试平台,适用于 6G 研究与卫星通信,高达 1.6 GHz 的带宽