我在Windows 7上有Chromium源代码,并通过.bat文件启动带有--app =“.. url”开关的自定义应用程序。如何防止用户打开我的Chromium应用的多个实例?这包括直接打开.exe文件,使用.bat文件并从任务栏上的跳转列表菜单中选择“Chromium”。只允许一个Chromium应用程序实例
2
A
回答
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。
相关问题
- 1. 只允许一个应用程序实例
- 2. 只允许Chrome js扩展程序的一个活动实例
- 3. 使用MEF只允许每个应用程序最多2个实例
- 4. 只允许使用信号量的应用程序的3个实例
- 5. ,只允许上实例线程
- 6. 如何只允许一个用户运行我的C#程序,但也允许多个实例?
- 7. 爪哇 - 只允许一次应用的实例
- 8. Android - 我怎么只允许一个MediaPlayer的实例一次玩?
- 9. Windows服务 - 只有一个实例,以允许一次
- 10. 只允许一个python脚本的1个实例
- 11. axwindowsmediaplayer的多个实例,只有一个允许全屏模式
- 12. Java:仅允许一个类实例化
- 13. 只允许输入一个字符的实例C#
- 14. 如何只启用我的应用程序的一个实例
- 15. 只允许1个应用程序连接到特定的WiFi
- 16. 如何确保Silverlight OOB应用程序只有一个实例?
- 17. 如何运行只有一个应用程序的实例
- 18. 同时让应用程序只有一个实例
- 19. WPF只强制执行一个应用程序的实例
- 20. 只有一个应用程序的实例
- 21. 只允许一个脚落
- 22. 使用Cron一次只允许一个PHP脚本的实例遇到麻烦
- 23. asp.net实用程序允许远程writeline?
- 24. 规定在JAXB中只允许一个元素的一个实例?
- 25. 抛出错误'使用babel时只允许使用babel-polyfill的一个实例'?
- 26. 只允许Facebook页面的管理员登录到一个应用程序
- 27. strongloop API服务器是否仅允许每个服务器实例使用一个REST应用程序?
- 28. 只有一个babel/polyfill实例允许使用角度UI路由器
- 29. 只允许ipad应用程序用户访问某些文件
- 30. 只允许一次