2016-10-15 3 views
1

私はC#の新人です。web Browserを使ってウェブサイトを開くプログラムを作ろうとしています。 Google、Facebookなどで正常に動作しますが、サイトhttps://shopee.ph/を開こうとすると何も起こりません。ウェブブラウザを使用してウェブサイトを開こうとすると何も起こりません。C#

これは、任意のソリューション私のコード

してくださいますか?

+0

そのブラウザを確認し、https://shopee.ph/unsupported.htmlにリダイレクト – Arshad

+0

下記の答えを確認しましたか? – Arshad

+0

多分もっと多くの機能が必要ですhttp://stackoverflow.com/questions/18333459/c-sharp-webbrowser-ajax-call – Slai

答えて

2

このサイトhttps://shopee.ph/はブラウザのバージョンを確認しています。サポートされていない場合はshopee.ph/unsupported.htmlにリダイレクトされます。デフォルトでは、WebBrowserコントロールはあなたのサイトでサポートされていないIE7を使用しています。 Webブラウザのブラウザを変更するには、hereのようにいくつかのオプションがあります。私はそれらの1つを試して、期待どおりに働いています。以下は完全なコードです:

using Microsoft.Win32; 
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.IO; 
using System.Linq; 
using System.Security; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     if (!WBEmulator.IsBrowserEmulationSet()) 
     { 
      WBEmulator.SetBrowserEmulationVersion(); 
     } 

     webBrowser1.AllowNavigation = true; 
     webBrowser1.Navigate("https://shopee.ph/"); 
    } 
} 

public enum BrowserEmulationVersion 
{ 
    Default = 0, 
    Version7 = 7000, 
    Version8 = 8000, 
    Version8Standards = 8888, 
    Version9 = 9000, 
    Version9Standards = 9999, 
    Version10 = 10000, 
    Version10Standards = 10001, 
    Version11 = 11000, 
    Version11Edge = 11001 
} 
public static class WBEmulator 
{ 
    private const string InternetExplorerRootKey = @"Software\Microsoft\Internet Explorer"; 

    public static int GetInternetExplorerMajorVersion() 
    { 
     int result; 

     result = 0; 

     try 
     { 
      RegistryKey key; 

      key = Registry.LocalMachine.OpenSubKey(InternetExplorerRootKey); 

      if (key != null) 
      { 
       object value; 

       value = key.GetValue("svcVersion", null) ?? key.GetValue("Version", null); 

       if (value != null) 
       { 
        string version; 
        int separator; 

        version = value.ToString(); 
        separator = version.IndexOf('.'); 
        if (separator != -1) 
        { 
         int.TryParse(version.Substring(0, separator), out result); 
        } 
       } 
      } 
     } 
     catch (SecurityException) 
     { 
      // The user does not have the permissions required to read from the registry key. 
     } 
     catch (UnauthorizedAccessException) 
     { 
      // The user does not have the necessary registry rights. 
     } 

     return result; 
    } 
    private const string BrowserEmulationKey = InternetExplorerRootKey + @"\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; 

    public static BrowserEmulationVersion GetBrowserEmulationVersion() 
    { 
     BrowserEmulationVersion result; 

     result = BrowserEmulationVersion.Default; 

     try 
     { 
      RegistryKey key; 

      key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true); 
      if (key != null) 
      { 
       string programName; 
       object value; 

       programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]); 
       value = key.GetValue(programName, null); 

       if (value != null) 
       { 
        result = (BrowserEmulationVersion)Convert.ToInt32(value); 
       } 
      } 
     } 
     catch (SecurityException) 
     { 
      // The user does not have the permissions required to read from the registry key. 
     } 
     catch (UnauthorizedAccessException) 
     { 
      // The user does not have the necessary registry rights. 
     } 

     return result; 
    } 
    public static bool SetBrowserEmulationVersion(BrowserEmulationVersion browserEmulationVersion) 
    { 
     bool result; 

     result = false; 

     try 
     { 
      RegistryKey key; 

      key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true); 

      if (key != null) 
      { 
       string programName; 

       programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]); 

       if (browserEmulationVersion != BrowserEmulationVersion.Default) 
       { 
        // if it's a valid value, update or create the value 
        key.SetValue(programName, (int)browserEmulationVersion, RegistryValueKind.DWord); 
       } 
       else 
       { 
        // otherwise, remove the existing value 
        key.DeleteValue(programName, false); 
       } 

       result = true; 
      } 
     } 

     catch (UnauthorizedAccessException) 
     { 
      // The user does not have the necessary registry rights. 
     } 

     return result; 
    } 

    public static bool SetBrowserEmulationVersion() 
    { 
     int ieVersion; 
     BrowserEmulationVersion emulationCode; 

     ieVersion = GetInternetExplorerMajorVersion(); 

     if (ieVersion >= 11) 
     { 
      emulationCode = BrowserEmulationVersion.Version11; 
     } 
     else 
     { 
      switch (ieVersion) 
      { 
       case 10: 
        emulationCode = BrowserEmulationVersion.Version10; 
        break; 
       case 9: 
        emulationCode = BrowserEmulationVersion.Version9; 
        break; 
       case 8: 
        emulationCode = BrowserEmulationVersion.Version8; 
        break; 
       default: 
        emulationCode = BrowserEmulationVersion.Version7; 
        break; 
      } 
     } 

     return SetBrowserEmulationVersion(emulationCode); 
    } 
    public static bool IsBrowserEmulationSet() 
    { 
     return GetBrowserEmulationVersion() != BrowserEmulationVersion.Default; 
    } 
} 
} 

うまくいけば、あなたの問題を解決できます。

+0

あなたの答えはありがとう、私は同じサイトに穴のコードと問題をまだコピーし、他の人とはうまく動作します。 –

+0

ブレークポイントを使って検査/デバッグしましたか? – Arshad

関連する問題