我正在开发一个简单的网络监视应用程序,该应用程序将根据您连接的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的变化,以便我可以做出相应的反应,但是事实证明,此问题对我有最好的认识。
任何见解或帮助将不胜感激。