定制chromium-定制启动首页,定制命令行参数

chromium定制启动首页

chromium中想要定制首页有很多种方法,接下来我将一一介绍,也欢迎大家补充。

1. 最简单的方式-启动带参数

启动带参数,是最简单的让chromium,一启动就打开某个url的方式。在启动chrome.exe的时候,使用命令行的方式启动

chrome.exe http://www.baidu.com

这样打开的chromium,直接就默认打开百度首页了。

2.修改源码实现默认打开某个url

首先先找到chrome_browser_main.cc这个文件。这个文件的所在地是src/chrome/browser/chrome_browser_main.cc目录中。chromium的启动,一开始必然会先进入PreMainMessageLoopRunImpl函数中,所以我们的代码在这里面进行添加。
chromium里面很灵活的使用了配置文件profile来定制chromium的一些功能,具体可以通过配置profile实现那些功能可以打开pref_names.cc来查看。具体目录是src/chrome/common/pref_names.cc,我们这里利用的就是kRestoreOnStartupkURLsToRestoreOnStartup这两个key来达到设置启动页的目的。我们来看看,代码里面对于这两个key的描述

// An integer pref. Holds one of several values:
// 0: (deprecated) open the homepage on startup.
// 1: restore the last session.
// 2: this was used to indicate a specific session should be restored. It is
//    no longer used, but saved to avoid conflict with old preferences.
// 3: unused, previously indicated the user wants to restore a saved session.
// 4: restore the URLs defined in kURLsToRestoreOnStartup.
// 5: open the New Tab Page on startup.
const char kRestoreOnStartup[] = "session.restore_on_startup";

// The URLs to restore on startup or when the home button is pressed. The URLs
// are only restored on startup if kRestoreOnStartup is 4.
const char kURLsToRestoreOnStartup[] = "session.startup_urls";

通过注释,我们很清楚的知道。当kRestoreOnStartup的值是4的时候,会打开kURLsToRestoreOnStartup中设置的url,所以代码我们可以利用这点来写。

(1)代码写死的方法

代码插入的地方在chrome_browser_main.cc 1239行之后。因为,我们在设置profile的时候,一定要在profile初始化完成之后即

profile_ = CreatePrimaryProfile(parameters(),
                                  user_data_dir_,
                                  parsed_command_line());

这段代码后面

插入以下代码,即可实现打开chromium默认显示指定网站

std::string gameUrl = "http://blog.csdn.net/jianglong0156"
PrefService* prefs = profile_->GetPrefs();
prefs->SetInteger(prefs::kRestoreOnStartup, 4);
base::ListValue* url_pref_list = new base::ListValue;
base::StringValue *urlStr = new base::StringValue(gameUrl);
url_pref_list->Set(0, urlStr);
prefs->SetDefaultPrefValue(prefs::kURLsToRestoreOnStartup, url_pref_list);
(2)命令行传入参数的方式

上面那种代码中写死的方式太不智能了。我们选着另外一种使用方式,那就是从命令行传入参数,将我们的gameUrl从命令行传入即可,代码如下

const CommandLine& command_line = parsed_command_line();
if (command_line.HasSwitch("game-url"))
{
  std::string gameUrl =
   command_line.GetSwitchValueASCII("game-url");
  PrefService* prefs = profile_->GetPrefs();
  prefs->SetInteger(prefs::kRestoreOnStartup, 4);
  base::ListValue* url_pref_list = new base::ListValue;
  base::StringValue *urlStr = new base::StringValue(gameUrl);
  url_pref_list->Set(0, urlStr);
  prefs->SetDefaultPrefValue(prefs::kURLsToRestoreOnStartup, url_pref_list);
  LOG(INFO) << "chrome_browser_main.cc(1254):" << "open url " << gameUrl;
}

具体代码解析请看下面定制命令行参数的方式。

定制命令行参数

我们在很多场景下需要输入一些数据让chromium做不同的事情,这个时候使用命令行参数是一个很方便的事情。

通过命令行传入参数

上文在定制首页中提到。我们需要传入定制url。这个时候我们可以在启动chromium的时候传入gameurl

chrome.exe –game-url=”http://blog.csdn.net/jianglong0156”
注意:等号两边没有空格。
这样启动的chromium中,就携带了game-url的数据。

程序中读取数据

获取CommandLine对象

在chrome_browser_main.cc中可以直接使用parsed_command_line()来获取CommandLine对象。而在其他类中可以使用CommandLine::ForCurrentProcess()来获取Command Line对象

判定命令行是否传入game-url数据

command_line.HasSwitch("game-url")

获取gmae-url数据
std::string userFilePathStr =           command_line.GetSwitchValueASCII("game-url");
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值