为了账号安全,请及时绑定邮箱和手机立即绑定

网页可在IE,Chrome和Firefox中运行,但在使用.NET WebBrowser控件时

/ 猿问

网页可在IE,Chrome和Firefox中运行,但在使用.NET WebBrowser控件时

回首忆惘然 2019-10-23 12:41:21

我在Visual Studio 2010中使用WebBrowser控件,并尝试显示页面:http : //lk21.org。


在该网页中,加载了许多脚本,如果我通过Firefox,Chrome和最新版本的IE等网络浏览器将其打开,效果会很好。


我的问题是,当我尝试使用WebBrowser组件导航到该页面时,为什么它显示“错误请求”?


看一下这个:

http://img3.mukewang.com/5dafda0600015e5b07590373.jpg

更新:

使用Visual Vincent的答案可以很好地加载页面。

但是,无法播放网站上的Flash视频(或我认为它类似于Flash)。请参见下图的比较。

奇怪的是,如果我打开YouTube,闪光灯效果很好。经过一些研究,它似乎是由其他原因引起的。有什么线索怎么解决呢?

Internet Explorer-工作正常:

http://img2.mukewang.com/5dafda100001deff13660768.jpg

WebBrowser控件-由于某些原因,视频卡住了,无法播放:

http://img.mukewang.com/5dafda19000163d613660768.jpg



查看完整描述

3 回答

?
守着星空守着你

WebBrowser默认情况下,该控件使用的是IE 7的文档仿真模式,这意味着所有页面都是使用Internet Explorer 7引擎处理的。由于该版本的版本过旧,因此今天的大多数网站都与该版本不兼容,这会影响您访问该页面时的功能。


您可以Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION通过在HKEY_LOCAL_MACHINE配置单元或的注册表项中为应用程序添加值来更改此行为HKEY_CURRENT_USER。这样,您将迫使您的应用程序使用特定版本的IE引擎。


我写了一堂课,可以帮助您:


'A class for changing the WebBrowser control's document emulation.

'Written by Visual Vincent, 2017.


Imports Microsoft.Win32

Imports System.Security

Imports System.Windows.Forms


Public NotInheritable Class InternetExplorer

    Private Sub New()

    End Sub


    Public Const InternetExplorerRootKey As String = "Software\Microsoft\Internet Explorer"

    Public Const BrowserEmulationKey As String = InternetExplorerRootKey & "\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION"

    Public Const ActiveXObjectCachingKey As String = InternetExplorerRootKey & "\MAIN\FeatureControl\FEATURE_OBJECT_CACHING"


    Private Shared ReadOnly WebBrowserInstance As New WebBrowser 'Used to get the current IE version in a .NET-friendly manner.


    Public Enum BrowserEmulation As Integer

        IE7 = 7000

        IE8 = 8000

        IE8Standards = 8888

        IE9 = 9000

        IE9Standards = 9999

        IE10 = 10000

        IE10Standards = 10001

        IE11 = 11000

        IE11Edge = 11001

    End Enum


    Public Shared Sub SetLatestBrowserEmulation(ByVal Root As RegistryRoot)

        Dim Emulation As BrowserEmulation = BrowserEmulation.IE7

        Select Case WebBrowserInstance.Version.Major

            Case Is >= 11 : Emulation = BrowserEmulation.IE11Edge

            Case 10 : Emulation = BrowserEmulation.IE10Standards

            Case 9 : Emulation = BrowserEmulation.IE9Standards

            Case 8 : Emulation = BrowserEmulation.IE8Standards

        End Select

        InternetExplorer.SetBrowserEmulation(Root, Emulation)

    End Sub


    Public Shared Sub SetBrowserEmulation(ByVal Root As RegistryRoot, ByVal Emulation As BrowserEmulation)

        Using RootKey As RegistryKey = Root.Root

            Dim EmulationKey As RegistryKey = RootKey.OpenSubKey(BrowserEmulationKey, True)

            If EmulationKey Is Nothing Then EmulationKey = RootKey.CreateSubKey(BrowserEmulationKey, RegistryKeyPermissionCheck.ReadWriteSubTree)


            Using EmulationKey

                EmulationKey.SetValue(Process.GetCurrentProcess().ProcessName & ".exe", CType(Emulation, Integer), RegistryValueKind.DWord)

            End Using

        End Using

    End Sub


    Public Shared Sub SetActiveXObjectCaching(ByVal Root As RegistryRoot, ByVal Enabled As Boolean)

        Using RootKey As RegistryKey = Root.Root

            Dim ObjectCachingKey As RegistryKey = RootKey.OpenSubKey(ActiveXObjectCachingKey, True)

            If ObjectCachingKey Is Nothing Then ObjectCachingKey = RootKey.CreateSubKey(ActiveXObjectCachingKey, RegistryKeyPermissionCheck.ReadWriteSubTree)


            Using ObjectCachingKey

                ObjectCachingKey.SetValue(Process.GetCurrentProcess().ProcessName & ".exe", CType(If(Enabled, 1, 0), Integer), RegistryValueKind.DWord)

            End Using

        End Using

    End Sub


    Public NotInheritable Class RegistryRoot

        Private _root As RegistryKey


        Public ReadOnly Property Root As RegistryKey

            Get

                Return _root

            End Get

        End Property


        Public Shared ReadOnly Property HKEY_LOCAL_MACHINE As RegistryRoot

            Get

                Return New RegistryRoot(Registry.LocalMachine)

            End Get

        End Property


        Public Shared ReadOnly Property HKEY_CURRENT_USER As RegistryRoot

            Get

                Return New RegistryRoot(Registry.CurrentUser)

            End Get

        End Property


        Private Sub New(ByVal Root As RegistryKey)

            Me._root = Root

        End Sub

    End Class

End Class

要使用它,请将以下行之一放入应用程序的Startup事件中:


InternetExplorer.SetLatestBrowserEmulation(InternetExplorer.RegistryRoot.HKEY_LOCAL_MACHINE)


'HKEY_CURRENT_USER is recommended if you do not want to run your application with administrative privileges.

InternetExplorer.SetLatestBrowserEmulation(InternetExplorer.RegistryRoot.HKEY_CURRENT_USER)

(注意:使用HKEY_LOCAL_MACHINE根需要管理员权限)


该InternetExplorer.SetLatestBrowserEmulation()方法将在指定的注册表根目录中将您的应用程序的浏览器仿真设置为Internet Explorer 的最新安装版本。


但是,使用该InternetExplorer.SetBrowserEmulation()方法可以手动控制应使用的IE版本(不推荐!)。

我似乎根本无法进入该站点,但是据我了解,WebBrowser控件中托管的Flash出现了问题。


您可以尝试禁用ActiveX对象缓存功能,这显然会导致Flash控件出现一些问题。


我更新了以上InternetExplorer课程。复制粘贴,然后将此行添加到应用程序的启动事件中:


InternetExplorer.SetActiveXObjectCaching(InternetExplorer.RegistryRoot.HKEY_CURRENT_USER, False)

如果仍然无法正常运行,那么恐怕您不走运。我没有找到其他有用的东西。


查看完整回答
反对 回复 2019-10-23
?
幕布斯7119047

基于@ Visual Vincent的答案,在这里我做了重新设计的解决方案:


1- IEBrowserEmulationMode枚举:


''' ----------------------------------------------------------------------------------------------------

''' <summary>

''' Specifies a Internet Explorer browser emulation mode.

''' </summary>

''' ----------------------------------------------------------------------------------------------------

''' <remarks>

''' <see href="https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330730(v=vs.85)"/>

''' </remarks>

''' ----------------------------------------------------------------------------------------------------

Public Enum IEBrowserEmulationMode As Integer


    ''' <summary>

    ''' Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.

    ''' </summary>

    IE7 = 7000


    ''' <summary>

    ''' Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode. 

    ''' </summary>

    IE8 = 8000


    ''' <summary>

    ''' Webpages are displayed in IE8 Standards mode, regardless of the declared !DOCTYPE directive. 

    ''' <para></para>

    ''' Failing to declare a !DOCTYPE directive causes the page to load in Quirks.

    ''' </summary>

    IE8Standards = 8888


    ''' <summary>

    ''' Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.

    ''' </summary>

    IE9 = 9000


    ''' <summary>

    ''' Webpages are displayed in IE9 Standards mode, regardless of the declared !DOCTYPE directive. 

    ''' <para></para>

    ''' Failing to declare a !DOCTYPE directive causes the page to load in Quirks.

    ''' </summary>

    IE9Standards = 9999


    ''' <summary>

    ''' Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode.

    ''' </summary>

    IE10 = 10000


    ''' <summary>

    ''' Webpages are displayed in IE10 Standards mode, regardless of the !DOCTYPE directive.

    ''' </summary>

    IE10Standards = 10001


    ''' <summary>

    ''' Webpages containing standards-based !DOCTYPE directives are displayed in IE11 edge mode.

    ''' </summary>

    IE11 = 11000


    ''' <summary>

    ''' Webpages are displayed in IE11 edge mode, regardless of the declared !DOCTYPE directive. 

    ''' <para></para>

    ''' Failing to declare a !DOCTYPE directive causes the page to load in Quirks.

    ''' </summary>

    IE11Edge = 11001


End Enum

2- RegistryScope枚举。


''' ----------------------------------------------------------------------------------------------------

''' <summary>

''' Specifies a registry scope (a root key).

''' </summary>

''' ----------------------------------------------------------------------------------------------------

Public Enum RegistryScope As Integer


    ''' <summary>

    ''' This refers to the HKEY_LOCAL_MACHINE (or HKLM) registry root key.

    ''' <para></para>

    ''' Configuration changes made on the subkeys of this root key will affect all users.

    ''' </summary>

    Machine = 0


    ''' <summary>

    ''' This refers to the HKEY_CURRENT_USER (or HKCU) registry root key.

    ''' <para></para>

    ''' Configuration changes made on the subkeys of this root key will affect only the current user.

    ''' </summary>

    CurrentUser = 1


End Enum

3- BrowserEmulationMode属性,用于获取或设置当前应用程序的IE浏览器仿真模式。


''' ----------------------------------------------------------------------------------------------------

''' <summary>

''' Gets or sets the Internet Explorer browser emulation mode for the current application.

''' </summary>

''' ----------------------------------------------------------------------------------------------------

''' <seealso href="https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330730(v=vs.85)"/>

''' ----------------------------------------------------------------------------------------------------

''' <example> This is a code example to get, set and verify the IE browser emulation mode for the current process.

''' <code>

''' Dim scope As RegistryScope = RegistryScope.CurrentUser

''' Dim oldMode As IEBrowserEmulationMode

''' Dim newMode As IEBrowserEmulationMode

''' 

''' oldMode = BrowserEmulationMode(scope)

''' BrowserEmulationMode(scope) = IEBrowserEmulationMode.IE11Edge

''' newMode = BrowserEmulationMode(scope)

''' 

''' Console.WriteLine(String.Format("Old Mode: {0} ({1})", oldMode, CStr(oldMode)))

''' Console.WriteLine(String.Format("New Mode: {0} ({1})", newMode, CStr(newMode)))

''' 

''' Dim f As New Form() With {.Size = New Size(1280, 720)}

''' Dim wb As New WebBrowser With {.Dock = DockStyle.Fill}

''' f.Controls.Add(wb)

''' f.Show()

''' wb.Navigate("http://www.whatversion.net/browser/")

''' </code>

''' </example>

''' ----------------------------------------------------------------------------------------------------

''' <param name="scope">

''' The registry scope.

''' </param>

''' ----------------------------------------------------------------------------------------------------

''' <value>

''' The Internet Explorer browser emulation mode.

''' </value>

''' ----------------------------------------------------------------------------------------------------

Public Shared Property BrowserEmulationMode(ByVal scope As RegistryScope) As IEBrowserEmulationMode

    <DebuggerStepThrough>

    Get

        Return GetIEBrowserEmulationMode(Process.GetCurrentProcess().ProcessName, scope)

    End Get

    <DebuggerStepThrough>

    Set(value As IEBrowserEmulationMode)

        SetIEBrowserEmulationMode(Process.GetCurrentProcess().ProcessName, scope, value)

    End Set

End Property

3- GetIEBrowserEmulationMode函数和SetIEBrowserEmulationMode方法,以获取或设置外部应用程序的IE浏览器仿真模式。


''' ----------------------------------------------------------------------------------------------------

''' <summary>

''' Gets the Internet Explorer browser emulation mode for the specified process.

''' </summary>

''' ----------------------------------------------------------------------------------------------------

''' <seealso href="https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330730(v=vs.85)"/>

''' ----------------------------------------------------------------------------------------------------

''' <example> This is a code example.

''' <code>

''' Dim processName As String = Process.GetCurrentProcess().ProcessName

''' Dim scope As RegistryScope = RegistryScope.CurrentUser

''' Dim mode As IEBrowserEmulationMode = GetIEBrowserEmulationMode(processName, scope)

''' 

''' Console.WriteLine(String.Format("Mode: {0} ({1})", mode, CStr(mode)))

''' </code>

''' </example>

''' ----------------------------------------------------------------------------------------------------

''' <param name="processName">

''' The process name (eg. 'cmd.exe').

''' </param>

''' 

''' <param name="scope">

''' The registry scope.

''' </param>

''' ----------------------------------------------------------------------------------------------------

''' <returns>

''' The resulting <see cref="IEBrowserEmulationMode"/>.

''' </returns>

''' ----------------------------------------------------------------------------------------------------

''' <exception cref="NotSupportedException">

''' </exception>

''' ----------------------------------------------------------------------------------------------------

<DebuggerStepThrough>

Public Shared Function GetIEBrowserEmulationMode(ByVal processName As String, ByVal scope As RegistryScope) As IEBrowserEmulationMode


    processName = Path.GetFileNameWithoutExtension(processName)


    Using rootKey As RegistryKey = If(scope = RegistryScope.CurrentUser,

                                      RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default),

                                      RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default)),

          subKey As RegistryKey = rootKey.CreateSubKey("Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",

                                                       RegistryKeyPermissionCheck.ReadSubTree)


        Dim value As Integer =

            CInt(subKey.GetValue(String.Format("{0}.exe", processName), 0, RegistryValueOptions.None))


        ' If no browser emulation mode is retrieved from registry, then return default version for WebBrowser control.

        If (value = 0) Then

            Return IEBrowserEmulationMode.IE7

        End If


        If [Enum].IsDefined(GetType(IEBrowserEmulationMode), value) Then

            Return DirectCast(value, IEBrowserEmulationMode)


        Else

            Throw New NotSupportedException(String.Format("Undefined browser emulation value retrieved from registry: '{0}'", value))



        End If


    End Using


End Function


''' ----------------------------------------------------------------------------------------------------

''' <summary>

''' Gets the Internet Explorer browser emulation mode for the specified process.

''' </summary>

''' ----------------------------------------------------------------------------------------------------

''' <seealso href="https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330730(v=vs.85)"/>

''' ----------------------------------------------------------------------------------------------------

''' <example> This is a code example.

''' <code>

''' Dim p As Process = Process.GetCurrentProcess()

''' Dim scope As RegistryScope = RegistryScope.CurrentUser

''' Dim mode As IEBrowserEmulationMode = GetIEBrowserEmulationMode(p, scope)

''' 

''' Console.WriteLine(String.Format("Mode: {0} ({1})", mode, CStr(mode)))

''' </code>

''' </example>

''' ----------------------------------------------------------------------------------------------------

''' <param name="p">

''' The process.

''' </param>

''' 

''' <param name="scope">

''' The registry scope.

''' </param>

''' ----------------------------------------------------------------------------------------------------

''' <returns>

''' The resulting <see cref="IEBrowserEmulationMode"/>.

''' </returns>

''' ----------------------------------------------------------------------------------------------------

''' <exception cref="NotSupportedException">

''' </exception>

''' ----------------------------------------------------------------------------------------------------

<DebuggerStepThrough>

Public Shared Function GetIEBrowserEmulationMode(ByVal p As Process, ByVal scope As RegistryScope) As IEBrowserEmulationMode


    Return GetIEBrowserEmulationMode(p.ProcessName, scope)


End Function


''' ----------------------------------------------------------------------------------------------------

''' <summary>

''' Sets the Internet Explorer browser emulation mode for the specified process.

''' </summary>

''' ----------------------------------------------------------------------------------------------------

''' <seealso href="https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330730(v=vs.85)"/>

''' ----------------------------------------------------------------------------------------------------

''' <example> This is a code example.

''' <code>

''' Dim processName As String = Process.GetCurrentProcess().ProcessName

''' Dim scope As RegistryScope = RegistryScope.CurrentUser

''' Dim oldMode As IEBrowserEmulationMode

''' Dim newMode As IEBrowserEmulationMode

''' 

''' oldMode = GetIEBrowserEmulationMode(processName, scope)

''' SetIEBrowserEmulationMode(processName, scope, IEBrowserEmulationMode.IE11Edge)

''' newMode = GetIEBrowserEmulationMode(processName, scope)

''' 

''' Console.WriteLine(String.Format("Old Mode: {0} ({1})", oldMode, CStr(oldMode)))

''' Console.WriteLine(String.Format("New Mode: {0} ({1})", newMode, CStr(newMode)))

''' 

''' Dim f As New Form() With {.Size = New Size(1280, 720)}

''' Dim wb As New WebBrowser With {.Dock = DockStyle.Fill}

''' f.Controls.Add(wb)

''' f.Show()

''' wb.Navigate("http://www.whatversion.net/browser/")

''' </code>

''' </example>

''' ----------------------------------------------------------------------------------------------------

''' <param name="processName">

''' The process name (eg. 'cmd.exe').

''' </param>

''' 

''' <param name="scope">

''' The registry scope.

''' </param>

''' 

''' <param name="mode">

''' The Internet Explorer browser emulation mode to set.

''' </param>

''' ----------------------------------------------------------------------------------------------------

''' <exception cref="NotSupportedException">

''' </exception>

''' ----------------------------------------------------------------------------------------------------

<DebuggerStepThrough>

Public Shared Sub SetIEBrowserEmulationMode(ByVal processName As String, ByVal scope As RegistryScope, ByVal mode As IEBrowserEmulationMode)


    processName = Path.GetFileNameWithoutExtension(processName)


    Dim currentIEBrowserEmulationMode As IEBrowserEmulationMode = GetIEBrowserEmulationMode(processName, scope)

    If (currentIEBrowserEmulationMode = mode) Then

        Exit Sub

    End If


    Using rootKey As RegistryKey = If(scope = RegistryScope.CurrentUser,

                                      RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default),

                                      RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default)),

          subKey As RegistryKey = rootKey.CreateSubKey(

                    "Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",

                    RegistryKeyPermissionCheck.ReadWriteSubTree)


        subKey.SetValue(String.Format("{0}.exe", processName),

                        DirectCast(mode, Integer), RegistryValueKind.DWord)


    End Using


End Sub


''' ----------------------------------------------------------------------------------------------------

''' <summary>

''' Sets the Internet Explorer browser emulation mode for the specified process.

''' </summary>

''' ----------------------------------------------------------------------------------------------------

''' <seealso href="https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330730(v=vs.85)"/>

''' ----------------------------------------------------------------------------------------------------

''' <example> This is a code example.

''' <code>

''' Dim processName As Process = Process.GetCurrentProcess()

''' Dim scope As RegistryScope = RegistryScope.CurrentUser

''' Dim oldMode As IEBrowserEmulationMode

''' Dim newMode As IEBrowserEmulationMode

''' 

''' oldMode = GetIEBrowserEmulationMode(p, scope)

''' SetIEBrowserEmulationMode(p, scope, IEBrowserEmulationMode.IE11Edge)

''' newMode = GetIEBrowserEmulationMode(p, scope)

''' 

''' Console.WriteLine(String.Format("Old Mode: {0} ({1})", oldMode, CStr(oldMode)))

''' Console.WriteLine(String.Format("New Mode: {0} ({1})", newMode, CStr(newMode)))

''' 

''' Dim f As New Form() With {.Size = New Size(1280, 720)}

''' Dim wb As New WebBrowser With {.Dock = DockStyle.Fill}

''' f.Controls.Add(wb)

''' f.Show()

''' wb.Navigate("http://www.whatversion.net/browser/")

''' </code>

''' </example>

''' ----------------------------------------------------------------------------------------------------

''' <param name="p">

''' The process.

''' </param>

''' 

''' <param name="scope">

''' The registry scope.

''' </param>

''' 

''' <param name="mode">

''' The Internet Explorer browser emulation mode to set.

''' </param>

''' ----------------------------------------------------------------------------------------------------

''' <exception cref="NotSupportedException">

''' </exception>

''' ----------------------------------------------------------------------------------------------------

<DebuggerStepThrough>

Public Shared Sub SetIEBrowserEmulationMode(ByVal p As Process, ByVal scope As RegistryScope, ByVal mode As IEBrowserEmulationMode)


    SetIEBrowserEmulationMode(p.ProcessName, scope, mode)


End Sub

使用示例获取,设置和验证当前进程的IE浏览器仿真模式:


Dim scope As RegistryScope = RegistryScope.CurrentUser

Dim oldMode As IEBrowserEmulationMode

Dim newMode As IEBrowserEmulationMode


oldMode = BrowserEmulationMode(scope)

BrowserEmulationMode(scope) = IEBrowserEmulationMode.IE11Edge

newMode = BrowserEmulationMode(scope)


Console.WriteLine(String.Format("Old Mode: {0} ({1})", oldMode, CStr(oldMode)))

Console.WriteLine(String.Format("New Mode: {0} ({1})", newMode, CStr(newMode)))


Dim f As New Form() With {.Size = New Size(1280, 720)}

Dim wb As New WebBrowser With {.Dock = DockStyle.Fill}

f.Controls.Add(wb)

f.Show()

wb.Navigate("http://www.whatversion.net/browser/")

使用示例获取,设置和验证特定过程的IE浏览器仿真模式:


Dim processName As String = Process.GetCurrentProcess().ProcessName

Dim scope As RegistryScope = RegistryScope.CurrentUser

Dim oldMode As IEBrowserEmulationMode

Dim newMode As IEBrowserEmulationMode


oldMode = GetIEBrowserEmulationMode(processName, scope)

SetIEBrowserEmulationMode(processName, scope, IEBrowserEmulationMode.IE11Edge)

newMode = GetIEBrowserEmulationMode(processName, scope)


Console.WriteLine(String.Format("Old Mode: {0} ({1})", oldMode, CStr(oldMode)))

Console.WriteLine(String.Format("New Mode: {0} ({1})", newMode, CStr(newMode)))


Dim f As New Form() With {.Size = New Size(1280, 720)}

Dim wb As New WebBrowser With {.Dock = DockStyle.Fill}

f.Controls.Add(wb)

f.Show()

wb.Navigate("http://www.whatversion.net/browser/")


查看完整回答
反对 回复 2019-10-23
?
潇湘沐

我刚刚发现并喜欢您的想法和解决方案,然后想将这种功能实现到我的一个库中,但是我不希望仅在不了解代码真正作用的情况下复制并粘贴其他代码,因此我需要重写/从头开始重构它(并调查官方资源以添加XML文档),以便满足一般需求(添加我添加的成员,重新命名方法以及删除我认为不必要的成员)对原始代码有更多可重用/友好的用法),那么最后我只是分享了我所做的。

查看完整回答
反对 回复 2019-10-23

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信