我在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. 只允許一個頁面的實例
- 3. 只允許一個python腳本實例?
- 4. 只允許一個程序正在運行的實例
- 5. 只允許Chrome js擴展程序的一個活動實例
- 6. 使用MEF只允許每個應用程序最多2個實例
- 7. 只允許使用信號量的應用程序的3個實例
- 8. 只允許一個Openshift應用程序連接到另一個
- 9. ,只允許上實例線程
- 10. 允許運行兩個應用程序實例
- 11. 如何只允許一個用戶運行我的C#程序,但也允許多個實例?
- 12. 爪哇 - 只允許一次應用的實例
- 13. 只允許登錄網站的用戶的一個實例
- 14. 允許AWS IAM用戶只啓動一個ec2實例
- 15. Android - 我怎麼只允許一個MediaPlayer的實例一次玩?
- 16. Windows服務 - 只有一個實例,以允許一次
- 17. 只允許一個python腳本的1個實例
- 18. axwindowsmediaplayer的多個實例,只有一個允許全屏模式
- 19. 只允許Google App Engine應用訪問一個Cloud SQL實例數據庫
- 20. Java:僅允許一個類實例化
- 21. 只允許輸入一個字符的實例C#
- 22. 只允許一個twitter引導工具提示實例
- 23. 只允許一個實例字段但需要更多?
- 24. 有沒有辦法只允許現有的win應用程序的一個實例?
- 25. 從一個實例運行另一個應用程序實例。
- 26. 如何只啓用我的應用程序的一個實例
- 27. 只允許1個應用程序連接到特定的WiFi
- 28. 限制只允許10個字符串「用戶名」的實例
- 29. BackGroundWorker一次只允許兩個線程
- 30. 如何確保Silverlight OOB應用程序只有一個實例?