Windows 7 E程序开发官方问答

系统
微软IE及网络技术专家Giorgio Sardo近日应邀回答了一些有关Windows 7 E的问题,主要从软件开发与应用的角度澄清了这个欧洲特别版的不同之处。

微软IE及网络技术专家Giorgio Sardo近日应邀回答了一些有关Windows 7 E的问题,主要从软件开发与应用的角度澄清了这个欧洲特别版的不同之处。

问:Windows 7 E版本与标准版之间有何区别?

答:唯一的功能区别就是(Windows 7 E)没有集成Internet Explorer 8浏览器,不过WebOC等互联网网络平台(Internet Web Platform)组件仍会存在于所有版本的Windows 7中,因为它们是Windows系统内核的一部分。

问:如何测试应用程序以确保在没有IE的情况下也能正常工作?

答:可以在控制面板的打开或关闭Windows功能对话框里取消IE8复选框,来模仿Windows 7 E环境。建议对应用程序对有无浏览器安装两种环境都进行测试。

Windows 7 E程序开发官方问答

问:如果在未安装浏览器的情况下点击超链接会如何?

答:会弹出一个“未找到应用程序”的错误对话框。

Windows 7 E程序开发官方问答

问:Windows 7 E对一般应用程序有何影响,特别是那些依赖WebOC的?

答:应用程序兼容性测试表明,绝大部分都可以直接在Windows 7 E里正常运行,包括大量使用WebBrowser控件、hosting Trident、HTML Help等网络平台组件的。

下边的截图就是一个嵌入了WebBrowser控件的.NET程序在Windows 7 E下运行的情况:

Windows 7 E程序开发官方问答

问:WPF、Win Froms、Java等使用WebBrowser控件的Windows应用程序会有兼容性问题么?

答:理论上一切都能正常工作,但是如果程序依赖某个特定的浏览器,就可能出现问题,特别是如果你使用WebBrowser控件让程序打开新窗口,但又不考虑用户的默认浏览器选择,就可能会碰到问题。

问:测试中发现的最常见问题是什么?对独立软件开发商(ISV)有何建议?

答:Windows 7 E中的程序兼容问题主要有三类:

1、在打开浏览器访问网络的时候严重依赖IE的程序。这种程序通常都是执行“iexplore.exe http://foobar.com”,而不是在http://foobar.com上执行ShellExecute。有时候是开发者粗心,有时候是某些网站只能通过IE才能正常打开,实属无奈。

2、允许在WebBrowser控件内部打开新窗口的程序。此类链接会始终通过IE打开,而与默认浏览器设置无关。建议使用NewWindow3事件,代码如下:

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

3、未考虑系统未安装浏览器情况的程序

问:如何识别用户的默认浏览器?

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

问:我的程序需要打开浏览器,怎么办最好?

答:运行shellexecute()而不要强行指定浏览器。尊重用户的默认浏览器选择。如果系统未安装浏览器,给用户相应提示。

问:如何检查我是否正在运行某个版本的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上同时发布。

问:Windows 7 E的IE8 Feature Pack功能包呢?是否、何时会公开发布?

答:Windows 7公开发售(10月22日)后会通过微软下载中心提供给用户。

【编辑推荐】

  1. Windows 7基本无助于固态硬盘普及
  2. 实战Windows7系统的Powershell命令
  3. 老显卡玩Windows 7蓝屏的故障处理
责任编辑:庞桂玉 来源: 驱动之家
相关推荐

2017-01-09 10:01:49

微信小程序

2009-08-02 08:47:59

Windows 7EWindows 7欧洲

2011-04-11 10:12:07

Windows 7主题

2009-07-14 08:53:53

微软Windows 7 EWindows 7欧洲

2009-07-16 08:52:41

Windows 7欧洲版预订

2010-11-03 15:10:04

SilverlightSilverlightWindows Pho

2011-03-21 09:05:40

IronRubyWindows Pho

2011-02-21 14:20:57

诺基亚开发者

2009-07-15 08:20:37

微软Windows 7Windows 7 R

2009-04-23 09:00:41

Windows 7微软操作系统

2009-12-31 09:05:33

Windows 7系统漫画

2009-08-21 18:52:52

Windows 7 R下载

2009-03-09 18:48:26

Windows 7驱动开发

2010-12-01 09:01:31

独立存储Windows Pho

2009-02-13 13:36:42

2009-07-06 08:42:14

微软Windows 7操作系统

2009-05-06 08:57:40

微软Windows 7操作系统

2015-03-10 10:29:26

微软Windows 7Azure云服务

2009-05-12 09:50:16

微软Windows 7操作系统

2009-08-18 09:10:36

Windows 7 UX64繁体中文版
点赞
收藏

51CTO技术栈公众号