views:

208

answers:

2

I need to determine the version of Mobile Internet Explorer on a Windows Mobile 6.1 device. So that I can report the same user-agent string as is being used by Mobile Internet Explorer. The user-agent string format has recently been changed to include version information.

My application is running on the Windows Mobile device creating a browser shell using the WebBrowser control.

The ObtainUserAgentString() API is not returning the same value as Mobile Internet Explorer is using.

When I try to get the version information from "IExplore.exe", GetFileVersionInfoSize() is returning 0, with a GetLastError() of 0x716. Most likely because IE Mobile is XIP.

Is there another way to determine the Mobile Internet Explorer version?

A: 

IE mobile generally uses a user-agent with something like "Windows CE" or "Windows Mobile". To determine this, just do a simple:

myUserAgentString = request.getHeader("User-Agent")
if ( myUserAgentString.indexOf("CE") >= 0 || myUserAgentString.indexOf("MOBILE") >= 0) {
  //this is IE
}

Once you detect that then you can treat that the same as IE, if that's what you want.

Scott Bennett-McLeish
+1  A: 

I don't know about IEMobile's own APIs, but how about injecting some JScript into the browser control's Document and accessing navigator.userAgent?

(Be prepared for headaches with Windows Mobile 6.5 though. The WebBrowser control doesn't behave in the same way as the browser itself. And the version number of IEMobile is the same on 6.5 as it is on 6.1.4, despite the rendering between the two being very different. Sigh.)

bobince