只允许一个Chromium应用实例

4

我在Windows 7上拥有Chromium源代码,并通过.bat文件使用--app="..url"开关启动我的自定义应用程序。 如何防止用户打开多个Chromium应用程序实例? 这包括直接打开.exe,使用.bat文件以及从任务栏的跳转列表菜单中选择"Chromium"。

1个回答

0
如果应用程序使用--app="...url"命令行参数启动,则以下解决方案将防止打开更多的Chrome“实例”。我之所以说“实例”,是因为Chrome实际上并没有创建新的Chrome基本进程。相反,它会打开一个新窗口,其中包含用于呈现该特定窗口的进程。
因此,在应用程序处于--app模式时,您只需要防止打开新窗口即可。这可以通过修改Chromium源代码中的Application_launch类中的OpenApplicationWindow()方法来实现:chrome/browser/ui/extensions/application_launch.cc
... 

OpenApplicationWindow(const AppLaunchParams& params) {
  browser = chrome::FindBrowserWithProfile(profile, params.desktop_type);

  #endif

  WebContents* web_contents;
  if (!browser) {
    browser = new Browser(browser_params);
    web_contents = chrome::AddSelectedTabWithURL(
       browser, url, content::PAGE_TRANSITION_AUTO_TOPLEVEL);
    web_contents->GetMutableRendererPrefs()->can_accept_load_drops = false;
    web_contents->GetRenderViewHost()->SyncRendererPrefs();
  }
  else {
    web_contents = browser->tab_strip_model()->GetActiveWebContents();
  }

   browser->window()->Show();

...

*注意:此方法中应该已经包含了一些Windows 8代码。目的是删除Windows 8 Metro模式的条件,以便始终防止新窗口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接