2010-04-08 6 views
2

XBAP (브라우저 호스팅 응용 프로그램)의 브라우저 버전 (예 : IE6, IE7 또는 IE8)을 확인할 수 있습니까? XBAP에서 브라우저 버전을 찾고 싶습니다.WPF에서 브라우저 버전 감지

+0

@ 롭 :? 당신은 우리가보고 할 수있는 방법이 필요 그렇다면, 그것은 무엇을 우리의 응용 프로그램에 대한 – VoidDweller

+0

이 필요로 실행하는 것을 브라우저 버전의 응용 프로그램이 실행되고 있습니다. 지원 목적으로 생성 된 보고서로 모든 종류의 시스템 정보가 있습니다. – Rob

답변

1

Microsoft 포럼의 도움을 받아 마침내 작동하는 방향으로 이끌었습니다. .. C++에서 NET 개념 증명 (아래

using namespace System::Windows::Forms; 

[STAThread] 
String^ GetBrowserVersion() { 
    String^ strResult = String::Empty; 
    WebBrowser^ wb = gcnew WebBrowser();    
    String^ strJS = "<SCRIPT>function GetUserAgent() { return navigator.userAgent; }</SCRIPT>"; 
    wb->DocumentStream = gcnew MemoryStream(ASCIIEncoding::UTF8->GetBytes(strJS));    
    while (wb->ReadyState != WebBrowserReadyState::Complete) { 
     Application::DoEvents(); 
    } 
    String^ strUserAgent = (String^)wb->Document->InvokeScript("GetUserAgent"); 
    wb->DocumentStream->Close(); 
    String^ strBrowserName = String::Empty; 
    int i = -1; 
    if ((i = strUserAgent->IndexOf("MSIE")) >= 0) {   
     strBrowserName = "Internet Explorer"; 
    } else if ((i = strUserAgent->IndexOf("Opera")) >= 0) { 
     strBrowserName = "Opera"; 
    } else if ((i = strUserAgent->IndexOf("Chrome")) >= 0) { 
     strBrowserName = "Chrome"; 
    } else if ((i = strUserAgent->IndexOf("FireFox")) >= 0) { 
     strBrowserName = "FireFox"; 
    } 
    if (i >= 0) { 
     int iStart = i + 5; 
     int iLength = strUserAgent->IndexOf(';', iStart) - iStart; 
     strResult = strBrowserName + " " + strUserAgent->Substring(iStart, iLength); 
    } 
    return strResult; 
} 
+0

좋은 생각, 고마워! 여기에서 C#과 WPF 사용하기. 내 코드에는 WebBrowser 컨트롤이 있고, 하나님의 사랑 때문에 브라우저의 버전을 얻을 수있는 곳을 찾을 수 없습니다. 내가 한 일은 외부 HTML 페이지 (내 .exe와 같은 위치)를 사용하여 다음과 같이로드했습니다. WebBrowserMain.Navigate ("pack : // siteoforigin : ,,, useragent.html"); 그리고 useragent.html 내에서 사용자 에이전트 정보를 수집하는 javascript를 통해 내 프로그램의 메소드를 호출했습니다. 감사합니다. – Rowan

1

나는 WPF가 아니라 실버 라이트를 의미한다고 생각하십니까? (그들은 비슷하지만 별개의 기술입니다).

위의 MSDN 페이지에서 System.Windows.Browser.BrowserInformation Class

특히

System.Windows.Browser.BrowserInformation.BrowserVersion 

살펴 보자

using System; 

사용 System.Windows.Controls을; using System.Windows.Browser;

public class Example 
{ 
    public static void Demo(System.Windows.Controls.TextBlock outputBlock) 
    { 
    outputBlock.Text += 
     "\nSilverlight can provide browser information:\n" 
    + "\nBrowser Name = " + HtmlPage.BrowserInformation.Name 
    + "\nBrowser Version = " + 
      HtmlPage.BrowserInformation.BrowserVersion.ToString() 
    + "\nUserAgent = " + HtmlPage.BrowserInformation.UserAgent 
    + "\nPlatform = " + HtmlPage.BrowserInformation.Platform 
    + "\nCookiesEnabled = " + 
      HtmlPage.BrowserInformation.CookiesEnabled.ToString() + "\n"; 

    } 
} 
+0

XBAP (XAML 브라우저 응용 프로그램) - 가능한 WPF 응용 프로그램이 있습니까? 브라우저에서 호스팅 http://msdn.microsoft.com/en-us/library/aa970060.aspx – VoidDweller

+0

실제로 XAML 브라우저 응용 프로그램을 의미하는 것은 아닙니다. 귀하의 솔루션을 사용하면 Silverlight에 대한 새로운 종속성이 생겼습니다. 찾았다. Microsoft 포럼에서 도움을 얻은 또 다른 해결책은 제 질문에 대한 제 응답을 참조하십시오. – Rob