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