微軟專家答記者問 - Windows 7歐洲版詳細情況

2009/7/14 10:11:56    編輯:Windows7之家 - Mary Jane     字體:【

Win7之家afsion.com.cn):微軟專家答記者問 - Windows 7歐洲版詳細情況

 微軟IE及網(wǎng)絡(luò)技術(shù)專家Giorgio Sardo近日應(yīng)邀回答了一些有關(guān)Windows 7 E的問題,主要從軟件開發(fā)與應(yīng)用的角度澄清了這個歐洲特別版的不同之處。

問:Windows 7 E版本與標準版之間有何區(qū)別?

答:唯一的功能區(qū)別就是(Windows 7 E)沒有集成Internet Explorer 8瀏覽器,不過WebOC等互聯(lián)網(wǎng)網(wǎng)絡(luò)平臺(Internet Web Platform)組件仍會存在于所有版本的Windows 7中,因為它們是Windows系統(tǒng)內(nèi)核的一部分。

問:如何測試應(yīng)用程序以確保在沒有IE的情況下也能正常工作?

答:可以在控制面板的打開或關(guān)閉Windows功能對話框里取消IE8復選框,來模仿Windows 7 E環(huán)境。建議對應(yīng)用程序?qū)τ袩o瀏覽器安裝兩種環(huán)境都進行測試。

Windows 7 E程序開發(fā)官方問答

問:如果在未安裝瀏覽器的情況下點擊超鏈接會如何?

答:會彈出一個“未找到應(yīng)用程序”的錯誤對話框。

Windows 7 E程序開發(fā)官方問答

問:Windows 7 E對一般應(yīng)用程序有何影響,特別是那些依賴WebOC的?

答:應(yīng)用程序兼容性測試表明,絕大部分都可以直接在Windows 7 E里正常運行,包括大量使用WebBrowser控件、hosting Trident、HTML Help等網(wǎng)絡(luò)平臺組件的。

問:WPF、Win Froms、Java等使用WebBrowser控件的Windows應(yīng)用程序會有兼容性問題么?

答:理論上一切都能正常工作,但是如果程序依賴某個特定的瀏覽器,就可能出現(xiàn)問題,特別是如果你使用WebBrowser控件讓程序打開新窗口,但又不考慮用戶的默認瀏覽器選擇,就可能會碰到問題。

問:測試中發(fā)現(xiàn)的最常見問題是什么?對獨立軟件開發(fā)商(ISV)有何建議?

答:Windows 7 E中的程序兼容問題主要有三類:

1、在打開瀏覽器訪問網(wǎng)絡(luò)的時候嚴重依賴IE的程序。這種程序通常都是執(zhí)行“iexplore.exe http://foobar.com”,而不是在http://foobar.com上執(zhí)行ShellExecute。有時候是開發(fā)者粗心,有時候是某些網(wǎng)站只能通過IE才能正常打開,實屬無奈。

2、允許在WebBrowser控件內(nèi)部打開新窗口的程序。此類鏈接會始終通過IE打開,而與默認瀏覽器設(shè)置無關(guān)。建議使用NewWindow3事件,代碼如下:

void web1_NewWindow3(
                ref object ppDisp,
                 ref bool Cancel,
                 uint dwFlags,
                 string bstrUrlContext,
                 string bstrUrl )
{
    Process.Start(bstrUrl);
    Cancel = true;
}

3、未考慮系統(tǒng)未安裝瀏覽器情況的程序。

問:如何識別用戶的默認瀏覽器?

答:使用IApplicationAssociationRegistration::QueryCurrentDefault API檢查QueryCurrentDefault(“http”, AT_URLPROTOCOL,  AL_EFFECTIVE, out progID)。

問:我的程序需要打開瀏覽器,怎么辦最好?

答:運行shellexecute()而不要強行指定瀏覽器。尊重用戶的默認瀏覽器選擇。如果系統(tǒng)未安裝瀏覽器,給用戶相應(yīng)提示。

問:如何檢查我是否正在運行某個版本的Windows 7 E?

答:GetProductInfo() API(已包含在Vista中)可以精確地告訴你當前Windows版本。用于Windows 7 E的新的常量值會在Windows 7 SDK中提供。

家庭高級版與旗艦版識別代碼示例:

[DllImport("Kernel32.dll")]
        internal static extern bool GetProductInfo(
            int osMajorVersion,
            int osMinorVersion,
            int spMajorVersion,
            int spMinorVersion,
            out uint edition);
                private void CheckEdition()
        {
            uint edition;
            GetProductInfo(6, 1, 0, 0, out edition);
            switch ((ProductEditions)(edition))
            {
                case ProductEditions.HOMEPREMIUM :
                case ProductEditions.HOMEPREMIUME:
                case ProductEditions.HOMEPREMIUMN:
                    MessageBox.Show("Running on a Home Premium edition");
                    break;
                case ProductEditions.ULTIMATE :
                case ProductEditions.ULTIMATEE:
                case ProductEditions.ULTIMATEN:
                    MessageBox.Show("Running on an Ultimate edition");
                    break;
            }
        }

問:Windows 7 E版本是否也會在MSDN上提供?如果是的話什么時候?

答:是的,Windows 7標準版和E版本都會在MSDN上同時發(fā)布。

問:Windows 7 E的IE8 Feature Pack功能包呢?是否、何時會公開發(fā)布?

答:Windows 7公開發(fā)售(10月22日)后會通過微軟下載中心提供給用戶。