Ciao, spesso usare le API non significa chiamare solo un metodo, in quanto a volte è necessario fornire (ed eventualmente ricavarsi) dei tipi realativi ad altre chiamate, altri metodi che ti "predispongono" e ti fanno ottenere quello che è necessario da passare come parametro ad altri metodi. ad esempio, in questo caso, prima di arrivare ad "ottenere" i parametri che ti servono per lavorare con WlanQueryInterface, devi passare per altri metodi, come : ottenere l'handle (WlanOpenHandle), enumerare le interfaccie (WlanEnumInterfaces ottieni un IntPtr che ti servirà a creare la struttura WLAN_INTERFACE_INFO_LIST contenente le lista delle informazioni), dovrai creare i vari tipi che ti servono per operare in questo senso, liberare memoria ecc.
Il link che ti ho postato voleva essere un aiuto, li potrai trovare la maggior parte dei tipi che ti servono già compresi di "trucchetti" (marshaling ecc.) che si renderanno necessari per operare con le API, credinmi, è inutile reinventare la ruota, sfrutta l'esperienza di chi ha già implementato alcune soluzioni e le ha messe a disposizione li o in altri siti...
comunque visto che ormai ci sono, se vuoi ti do una mano :
questo è il codice che ti permette di ottenere diverse informazioni sul wifi (quello che tu volevi ottenere con WlanQueryInterface... :) che come vedrai verra chiamato, ma...)
(WiFi.vb)
si usa con Wifi.GetInfo() ottenendo una lista di "WiFiInfo"
poi abbiamo un tipo che eredita da picturebox (DynamicPictureBox.vb) che ti servirà per mostrare le immagini del segnale
[CODE]
Imports System.ComponentModel
Partial Public Class DynamicPictureBox
Inherits PictureBox
Public m_images As ImageList
Public Property Images() As ImageList
Get
Return Me.m_images
End Get
Set(value As ImageList)
Me.m_images = value
End Set
End Property
Private m_signal As Integer = 0
Public Property Signal() As Integer
Get
Return Me.m_signal
End Get
Set(value As Integer)
Me.SetSignal(value)
End Set
End Property
Public Property MaxSignal() As Integer
Get
Return m_MaxSignal
End Get
Set(value As Integer)
m_MaxSignal = value
End Set
End Property
Private m_MaxSignal As Integer
Public Sub New()
InitializeComponent()
End Sub
Private Sub SetSignal(Signal As Integer)
Try
Dim index As Integer = MaxSignal / Me.Images.Images.Count
index = Signal \ index
If index > 0 Then
index -= 1
End If
Me.Image = Me.Images.Images(index)
Me.m_signal = Signal
Catch
End Try
End Sub
End Class
[/CODE]
infine, dovrai aggiungere nella tua form :
1 o più DynamicPictureBox (in base a quante interfacce hai e vuoi monitorare) impostare per ognuna la proprietà MaxSignal a 100, per ognuna una ImageList contenente le immagini che vorrai mostrare in base alla potenza del segnale, dalla meno potente alla più potente in ordine crescente nella posizione della lista, infatti la "DynamicPictureBox" divide la poterza massima del segnale per il numero di immagini presenti nella proprietà Images, quindi in base al segnale impostato nella proprieà Signal, determina l'immagine da mostrare.
1 timer che ti permette di fare il refresh delle informazioni e aggiornare la DynamicPictureBox
1 meccanismo per aggiornare le DynamicPictureBox (sotto un esempio con Timer1_Tick)
esempio (Form1.vb):
spero ti sia utile.
ciao.