2014-09-25 81 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。

相關問題