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

Chromium 设置页面打开系统代理源码分析c++

1、前端页面调用showProxySettings() {chrome.send("showProxySettings")}
2、c++ 响应代码如下 chrome\browser\ui\webui\settings\system_handler.ccvoid SystemHandler::RegisterMessages() {web_ui()->RegisterMessageCallback("showProxySettings",base::BindRepeating(&SystemHandler::HandleShowProxySettings,base::Unretained(this)));
}void SystemHandler::HandleShowProxySettings(const base::Value::List& args) {base::RecordAction(base::UserMetricsAction("Options_ShowProxySettings"));settings_utils::ShowNetworkProxySettings(web_ui()->GetWebContents());
}3、chrome\browser\ui\webui\settings\settings_utils_win.cc// Connections tab selected.
void OpenConnectionDialogCallback() {// Using rundll32 seems better than LaunchConnectionDialog which causes a// new dialog to be made for each call.  rundll32 uses the same global// dialog and it seems to share with the shortcut in control panel.base::FilePath rundll32;base::PathService::Get(base::DIR_SYSTEM, &rundll32);rundll32 = rundll32.AppendASCII("rundll32.exe");base::FilePath shell32dll;base::PathService::Get(base::DIR_SYSTEM, &shell32dll);shell32dll = shell32dll.AppendASCII("shell32.dll");base::FilePath inetcpl;base::PathService::Get(base::DIR_SYSTEM, &inetcpl);inetcpl = inetcpl.AppendASCII("inetcpl.cpl,,4");std::wstring args(shell32dll.value());args.append(L",Control_RunDLL ");args.append(inetcpl.value());//通过shell方式启动系统代理设置//win10以下打开IE代理ShellExecute(NULL, L"open", rundll32.value().c_str(), args.c_str(), NULL,SW_SHOWNORMAL);
}void ShowNetworkProxySettings(content::WebContents* web_contents) {if (base::win::GetVersion() >= base::win::Version::WIN10) {// See启动的是SystemSettings.exe 代理// https://docs.microsoft.com/en-us/windows/uwp/launch-resume/launch-settings-app#network--internetplatform_util::OpenExternal(Profile::FromBrowserContext(web_contents->GetBrowserContext()),GURL("ms-settings:network-proxy"));} else {base::ThreadPool::PostTask(FROM_HERE, {base::TaskPriority::USER_VISIBLE, base::MayBlock()},base::BindOnce(&OpenConnectionDialogCallback));}
}

win10效果:

win7系统效果:                                  

相关文章:

  • C语言 | Leetcode C语言题解之第443题压缩字符串
  • 《中国电子报》报道: 安宝特AR为产线作业者的“秘密武器
  • 桥接模式和NET模式的区别
  • 今年Java回暖了吗
  • Python模拟真人鼠标轨迹算法
  • 帮儿女带孩子的老人,都有以下几种共性
  • Linux基础入门 --12 DAY(SHELL脚本编程基础)
  • Go基础学习06-Golang标准库container/list(双向链表)深入讲解;延迟初始化技术;Element;List;Ring
  • Kafka 的重平衡问题详解及解决方案
  • 制作 rootfs步骤
  • 数据库操作:数据类型
  • Vue.js组件开发指南
  • 基于STM32的无人驾驶汽车路径规划与视觉识别系统
  • 【论文速读】DDIM:DENOISING DIFFUSION IMPLICIT MODELS
  • ACDsee简体中文版网盘资源下载(含教程)
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • AngularJS指令开发(1)——参数详解
  • canvas 五子棋游戏
  • dva中组件的懒加载
  • Fastjson的基本使用方法大全
  • iOS小技巧之UIImagePickerController实现头像选择
  • JS变量作用域
  • mysql_config not found
  • October CMS - 快速入门 9 Images And Galleries
  • VuePress 静态网站生成
  • 翻译--Thinking in React
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 基于web的全景—— Pannellum小试
  • 将回调地狱按在地上摩擦的Promise
  • 前端学习笔记之观察者模式
  • 前端之Sass/Scss实战笔记
  • 深入 Nginx 之配置篇
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 物联网链路协议
  • 用jquery写贪吃蛇
  • 原生 js 实现移动端 Touch 滑动反弹
  • 自制字幕遮挡器
  • 进程与线程(三)——进程/线程间通信
  • 如何用纯 CSS 创作一个货车 loader
  • $.ajax()
  • ( 10 )MySQL中的外键
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)JAVA使用POI操作excel
  • (黑马点评)二、短信登录功能实现
  • (四)linux文件内容查看
  • (算法)前K大的和
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)fock函数详解
  • (转)ObjectiveC 深浅拷贝学习
  • (转)大型网站的系统架构
  • (转载)Linux 多线程条件变量同步
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • 、写入Shellcode到注册表上线
  • .gitignore文件使用
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)