我在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. 只允許一次