仅允许一个Chromium应用实例

时间:2014-09-25 18:35:06

标签: batch-file windows-7 chromium

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

1 个答案:

答案 0 :(得分: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 Mode的条件,因此始终阻止新的Windows。