评论(0)

微软专家:Windows 7 E版没有IE8怎么办

2009-07-14 09:25 上方文Q A+

  :测试中发现的最常见问题是什么?对独立软件开发商(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日)后会通过微软下载中心提供给用户。

进入【Windows 7热门讨论区】

进入【Windows 7·微软官方合作专区】

打开客户端,无广告困扰,阅读更专注

热门新闻

推荐内容