2014-09-25 83 views
2

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

回答

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模式的条件,所以总是阻止新的Windows。

相关问题