更改接入点时的本机WiFi错误

时间:2019-04-29 09:12:19

标签: .net vb.net

我正在开发一个简单的网络监视应用程序,该应用程序将根据您连接的SSID调整计算机上的IPv4设置,我想要实现的一切都已准备就绪,但是我目前检测SSID错误变化的方法如果在我切换接入点时循环运行。尽管我在VB.Net中缺乏足够的经验来自己设置适当的事件处理程序,但是检测本身是非常基本的并且是原始的。

我试图等待

Wlan.WlanInterfaceState.NotReady

但是,这证明是不成功的。我确实经过了搜索我的问题的动议,并寻找其他人是否遇到过类似的问题,而他们发现的解决方案在我的案例中也被证明是完全不成功的。

我的主要循环功能是:

    Public Sub WiFiScan()
        If Wlan.WlanInterfaceState.NotReady Then
            WhatAPResult = "WiFi is Off"
            MsgBox("")
        Else
            WhatAP()
        End If
        MainForm.NetLabelAP.Text = ("Current AP: " + WhatAPResult)
    End Sub

此处引用的WhatAP()函数是:

    Public Function WhatAP()
        If wifiON() = True Then
            Dim wlanx = New WlanClient()
            If Wlan.WlanInterfaceState.NotReady Then
            Else
                Dim connectedSsids As Collection(Of [String]) = New Collection(Of String)()

                For Each wlanInterface As WlanClient.WlanInterface In wlanx.Interfaces
                    Dim ssid As Wlan.Dot11Ssid = wlanInterface.CurrentConnection.wlanAssociationAttributes.dot11Ssid
                    connectedSsids.Add(New [String](Encoding.ASCII.GetChars(ssid.SSID, 0, CInt(ssid.SSIDLength))))

                    For Each item As String In connectedSsids
                        WhatAPResult = item
                        Return True 'CHANGE THE LABEL TO A TEXTBOX OR WHERE EVER YOU WANT TO DISPLAY YOUR CONNECTED WIFI'S NAME.
                    Next
                Next
                ''CONTINUE ON FROM HERE.
            End If
        Else
            Return False
        End If
    End Function

WifiON()本身就是一个基本功能:

    Public Function wifiON()
        Dim nics() As System.Net.NetworkInformation.NetworkInterface =
    System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
        For Each nic In nics
            If nic.Name = "WiFi" And nic.OperationalStatus = OperationalStatus.Up Then
                Return True
                Exit Function
            End If
        Next
        Return False
    End Function

我得到的错误是:

System.ArgumentException: 'Type 'NativeWifi.Wlan+WlanReasonCode' cannot be marshaled as an unmanaged structure; 

我所要做的就是让程序准确地检测到所连接的SSID的变化,以便我可以做出相应的反应,但是事实证明,此问题对我有最好的认识。

任何见解或帮助将不胜感激。

0 个答案:

没有答案