lunedì 23 maggio 2016

SID 2016 evento sulle infrastrutture tecnologiche

Si terrà il 15 e 16 giugno 2016, il SID 2016, l'evento gratuito che riguarda il mondo delle infrastrutture tecnologiche.
Durante le due giornate, i partecipanti potranno scoprire le novità e le potenzialità offerta dalla tecnologia Microsoft.
Due giorni di formazione in cui scoprire tutto ciò che riguarda la sicurezza, i sistemi operativi, big data, cloud e tanto altro.

Per maggiori informazioni ed iscrizioni visitare il seguente sito http://infrastructureday.com/2016/index.aspx

domenica 22 maggio 2016

Download Free ebook Windows 10 IT Pro Essentials: Top 10 Tools



Un ebook di circa 165 pagine in lingue, che illustrano alcuni strumenti utili per utilizzare al meglio Windows 10.
L'ebook è scaricabile gratuitamente senza registrazione, ed è informato pdf, e sistemi mobile.

Per maggiori informazioni o download, visitate il seguente sito https://blogs.msdn.microsoft.com/microsoft_press/2016/04/26/free-ebook-windows-10-it-pro-essentials-top-10-tools/

lunedì 16 maggio 2016

C# convertire array di string in array di int

 Nel caso che abbiamo la necessità di convertire un array di string in array di int, tramite il metodo ConvertAll abbiamo tale possibilità, passando come secondo parametro il tipo.
Qui di seguito un esempio di codice.

 int[] RisultatoArray = Array.ConvertAll(ArrayString, int.Parse);

martedì 10 maggio 2016

Recensione netgear Wi-Fi Range Extender AC750

Il dispositivo della Netgear Wifi Range Extender Ac750 http://www.netgear.it/home/products/networking/wifi-range-extenders/EX3700.aspx che permette di estendere il segnale Wifi di internet, è un ottimo prodotto, che oltre alla facilità di installazione, consente di coprire una vasta area in cui possiamo riscontrare limite di segnale wifi.
La prova effettuata su tale dispositivo, ha dimostrato la validità di trasmissione di segnale, confermando un ottimo prodotto nel caso che si vuole acquistare un ripetitore che estende il segnale wifi in quelle abitazioni o luoghi di lavoro in cui per motivi struttura risulta difficile utilizzare l’internet tramite wifi.
Ma entriamo nel dettaglio della prova.
La scatola (figura 1) contiene al suo internet, il dispositivo, un dvd per l’installazione ed un manuale cartaceo.
Figura 1 – La scatola.

Le doppie antenne permette di aumentare il segnale, inoltre il dispositivo si presta molto bene visto che è compatto, riducendo di molto lo spazio (figura 2).

Figura 2 – Il dispositivo.

La periferica, oltre ad una presa di corrente elettrica posta nella parte posteriore ed una presa per la rete (ethernet ) sul lato destro,  sul lato sinistro (figura 3) sono presenti due pulsanti, uno di spegnimento ed accensione, uno per la trasmissione sicura (WPS) ed un pulsantino per il reset, ossia annullamento di tutte le impostazioni.

Figura 3 – Un lato del ripetitore

Dopo averlo posizionato nella prese elettrica (figura 4 ) si accenderanno le luci, in questo modo sarà possibile utilizzarlo.

Figura 4 – Il ripetitore collegato alla presa elettrica.

Passiamo ora alla configurazione tramite computer del dispositivo e relativo utilizzo.
Inseriamo il dvd che è presente nella scatola, in questo modo viene visualizzato una schermata (Figura 5),  che offre diverse possibilità, per esempio la possibilità di consultare la documentazione per l’installazione e configurazione, ricevere supporto e registrare il dispositivo per ricevere assistenza e garanzia.
Figura 5 – la finestra iniziale


Se facciamo click sulla voce “Documentazione” e poi sulla voce “Guida all’installazione” (figura 2) verrà aperto il manuale per la prima installazione

Figura 6 – la pagina dei sottomenu

Una volta collegato il dispositivo alla rete elettrica, dopo qualche minuto visualizzeremo nell’elenco delle reti wifi il nome “NETGEAR_EXT” (figura 7).

Figura 7 – L’elenco delle rete wifi tra cui quella del dispositivo.


Come si può vedere, la rete risulta aperta, facciamo click su tale voce e ci colleghiamo (tramite la voce “Connetti”).

A questo punto si aprirà il browser predefinito del nostro computer, con una guida in linea, il tutto come mostrato in figura 8.

Figura 8 – la pagina di configurazione

Nel caso che non si dovesse aprire, apriamo un qualunque browser e digitiamo il seguente sito (http://www.mywifiext.net)
A questo punto facciamo click sul pulsante di colore viola con la scritta “Nuova configurazione Dell’Extender”.
Verrà visualizzata un modulo nel quale si dovrà creare un account (figura 9), che permette di impostare alcuni aspetti della sicurezza.

Figura 9 – il Modulo per la creazione account

Dopo aver inserito tutti i dati, digitiamo il pulsante “Avanti” in questo modo verrà creato ed abilitato l’utenza.
Il wizard, che guida l’utente passo per passo, ci fornirà nelle prossime visualizzazioni, informazioni utili a rendere la rete sicura ma al tempo stesso affidabile.
Nella pagina successiva, ci chiede l’area geografica di appartenenza (figura 10).
Figura 10 – L’area di appartenenza.

Trovandoci in Italia, selezioniamo la voce “Europa”.
La schermata successiva (figura 11) ci chiede se vogliamo utilizzare il dispositivo in maniera di “Estensione della rete wifi” oppure come “Access point”.
Nel nostro caso il dispositivo verrà utilizzato per estendere il segnale WiFie in vari posti, e quindi dobbiamo fare click sulla voce “Wi Fi Range Extender”.
Figura 11 –  La scelta di come utilizzare il dispositivo.

Dopo aver fatto click sul pulsante “WIFI RANGE EXTENDER”, verrà aperta una finestra nel quale verrà effettuata una ricerca su tutte le rete wifi che rientrano nel raggio del dispositivo (figura 12) .
Figura 12 – La ricerca di tutte le rete WIFI

Non appena la ricerca è terminata, verranno visualizzate tutte le rete Wifi, suddivise per potenza del segnale (figura 13) .


Figura 13 – La rete Wifi.

Selezioniamo quella di nostro interesse, o meglio quella che abbiamo attivato, e facciamo click sul pulsante “Avanti”.
Nella parte destra, come si vede in figura 14, troviamo quella con il segnale più potente,  che riguarda la nostra rete wifi, se facciamo click su tale rete, le altre reti diverranno più opache ed il pulsante “Avanti” verrà abilitato.
Figura 14  - La selezione della rete.

Nella schermata successiva, ci chiede la password della connessione rete wifi che abbiamo selezionato nella precedente schermata. (figura 15 )

Figura 15 – La schermata per immettere la password.

Dopo aver inserito la password, facciamo click sul pulsante “Avanti”, in questo modo verrà effettuato il collegamento alla rete ed il dispositivo potrà estenderlo.
Questo passaggio fornirà le impostazioni di configurazioni della rete.

Figura 16 – la configurazione della rete wifi

Dopo aver terminato la configurazione della rete Wifi, ci chiederà se vogliamo  assegnare un nome (figura 17) alla rete, oppure possiamo lasciare quello proposto dal dispositivo.
Figura 17 – La scelta del nome della rete.

Dopo aver assegnato o lasciato il nome della rete, verrà visualizzata una schermata con le informazioni della rete appena creata. (figura 18).
Figura 18 – La scheda di riepilogo della rete.

Ora se proviamo ad accedere con il nostro computer alla rete wifi estesa, noteremo che il segnale risulta forte, come mostrato in figura 19.


Figura 19 – Il forte segnale della rete wifi estesa.

Conclusioni.

Come si è vista in questa recensione, il prodotto oltre ad offrire ottime prestazioni, permette una sicurezza affidabile, garantendo all’utente la riservatezza e soprattutto tranquillità di non avere violazioni nella propria rete.
Altro punto importante da non sottovalutare e la facilità in cui installare e configurare il dispositivo, dando così la possibilità a chiunque di poterlo fare anche se non si hanno conoscenze avanzate nell’utilizzo del computer.

lunedì 9 maggio 2016

Oracle update togliendo gli spazi di un campo

Se vogliamo eliminare in una tabella gli spazi presenti in un campo, possiamo utilizzare la funzione trim.
Nel caso che non si mette la condizione where, l'aggiornamento sarà effettuato su tutti i record.
Qui di seguito un esempio di codice.
Update tabella
set CAmpo = trim(Campo)

domenica 8 maggio 2016

FT: Un blogger che ci saluta e si ricorda

Quando ho iniziato a scrivere post, tramite piattaforma blog, mi sono detto, è una cosa che faccio per me, e che i blog non dureranno.
Invece mi sbagliavo, mi sono accorto che da quel 2006 (il mio primo blog) il blog non solo poteva tornarmi utile nel lavoro (potevo rivedere il codice scritto in passato, quindi una sorta di archivio) ma anche e soprattutto utile ad altri.
Negli anni successivi, ed in particolare dal 2008, ho iniziato anche a frequentare le community su tecnologia Microsoft, momenti di confronto e crescita ma anche la nascita di amicizie vere fuori dal virtuale.
Con il tempo ho scritto sempre di più al punto che ci sono stati anni in cui avevo una media anche di due post (articoli e trucchi) al giorno.
Ma qualche mese fa mi posi una domanda, fino a quando avrò l'entusiasmo a scrivere, ma soprattutto, chi fa informazione sul web, come appunto portali e blog, in forma volontaria, continuerà?

La risposta, provavo a darla, ed alla fine sono arrivato alla conclusione, che un giorno, chiunque
smetterà di scrivere per dedicarsi a ciò che piace.

In questi ultimi due anni, chi segue il mio blog, avrà notato che ho diminuito la mia attività sul web, non perché non piace, anzi, ma per via di un impegno sociale molto importante, da una parte il progetto L'Angolo Del Computer, e dall'altra la lotta alla corruzione e malcostume che a Roma ne fanno da padrona.
Riqualificazione di quartieri e cultura, sono due parole, che in questi anni sono riuscito a fare, e non solo in un quartiere di Roma.
Ma è dura e molto impegnativo, vedere poi che la maggior parte dei romani, non affronta il problema ma soprattutto pensa che tali problemi si risolvono su Facebook, o facendo comizi al bar  mi viene da prendere e mollare tutti.
Ma non voglio parlare di me, la scrittura di questo post è nata leggendo così per caso, il post di Diego, un blogger nonché programmatore .Net, che ho conosciuto proprio con le community.

Ci siamo anche visti tre volte, nonostante lui è di Trieste ed io di Roma, abbiamo avuto modo di incontrarci.
Ma leggendo il suo post qui http://community.visual-basic.it/Diego/archive/2016/04/15/domani-smetto.aspx in cui mi ha "nominato" comprendo il suo pensiero, perché in fondo abbiamo una vita sola e la dobbiamo vivere nel modo migliore.

Al caro Diego, auguro tante belle cose, e lo ringrazio perché si è ricordato di me,  prima o poi smetterò anch'io, per dedicarmi alle mie passioni, ma per ora, vi tormenterò con notizie informatiche ed esempi di codice di programmazione......


mercoledì 4 maggio 2016

Entity Framework duplicate entity C#

Nel caso che c'è la necessità di duplicare un record, può capitare che al secondo salvataggio, generi un errore.

Il frammento di codice qui di seguito, illustra una tecnica di come inserire un record uguale ad uno precedentemente salvato, ma con una chiave diversa.

 if (EntitaNew.EntityKey  == null || EntitaNew.EntityKey.IsTemporary)
            {
                Oggetto.GetDataContext().TABELLA.AddObject(EntitaNew);
            }
            else
            {
                Oggetto.GetDataContext().TABELLA.Attach(EntitaNew);
            }
            Oggetto.GetDataContext().ObjectStateManager.ChangeObjectState(EntitaNew, EntityState.Added);

            Oggetto.SaveChanges();

domenica 1 maggio 2016

Evento gratuito sulla sicurezza informatica

ESET Security Days 2016 | Live the Experience


A Roma, il 4 maggio, si svolgerà un evento dedicato al mondo della sicurezza informatica.
Il Eset Security Days 2016, qui http://www.esetsecuritydays.com/it/ il sito, offre ai partecipanti la possibilità di conoscere i pericoli di internet ed in genere del mondo informatico e la eventuali possibili difese.

Per maggiori informazioni ed iscrizioni visitate il sito indicato.

giovedì 28 aprile 2016

Crystal Report arrotondamenti nella formula

In Crystal Report, se vogliamo arrotondare un importo, possiamo utilizare la funzione round, la quale permette di arrotondare un numero per difetto o eccesso.
Se invece vogliamo arrotondare per eccesso, dobbiamo utilizzare la funzione "CEILING" che arrotonda per eccesso.

Qui di seguito due esempi
 
 
Round(ToNumber({NomeTabella.Campo}))
CEILING(ToNumber({NomeTabella.Campo}))

martedì 26 aprile 2016

Sito di informatica guida informatica

Per la rubrica segnalazione sito, oggi vi segnalo il portale La guida informatica, raggiungibile qui http://www.laguidainformatica.it/
Un sito, in lingua italiana, dove si trovano notizie riguardante il computer, in particolare virus e software, ma anche altre tematiche sempre legate al computer.

lunedì 25 aprile 2016

.Net Rilevare il nome della scheda WIFI e verificare lo stato

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_net-rilevare-il-nome-della-scheda-wifi-e_1439.aspx

In questo articolo vedremo come rilevare il nome della scheda WiFi e verificare lo stato, ossia connesso, disconnesso o altro.
Utilizzeremo le API di Windows per gestire la periferica.

Stesura del codice

Si crea un nuovo progetto di tipo “Windows Application” utilizzando il linguaggio di programmazione di programmazione  VB.Net o C# in base alla conoscenza del lettore.
Aggiungiamo nella form un pulsante il quale visualizzerà in una casella di testo il nome della scheda e lo stato.
Passiamo in visualizzazione codice.
Aggiungiamo lo spazio dei nomi per gestire l’interoperabilità, ossia l’utilizzo delle API.


VB.Net

Imports System.Runtime.InteropServices

 

C#

using System.Runtime.InteropServices;

 





Si creano due costanti le quali saranno utilizzate nelle funzioni API per verificare se le chiamate sono andate a buon fine oppure no.
Qui di seguito il frammento di codice delle suddette operazioni.





VB.Net

Private Const WLAN_API_VERSION_2_0 As Integer = 2

    Private Const ERROR_SUCCESS As Integer = 0

 

C#

private const int WLAN_API_VERSION_2_0 = 2; 

        private const int ERROR_SUCCESS = 0;




A questo punto non ci resta che aggiungere le funzioni API di Windows, per rilevare le informazioni della scheda.
Qui di seguito i frammenti di codice per entrambi i linguaggi.



VB.Net

 

'''

    ''' Apertura alla connessione al server

    '''

    <DllImport("wlanapi.dll", SetLastError:=True)> _

    Private Shared Function WlanOpenHandle(dwClientVersion As UInt32, pReserved As IntPtr, ByRef pdwNegotiatedVersion As UInt32, ByRef phClientHandle As IntPtr) As UInt32

    End Function

 

    '''

    ''' Chiusura connessione al server

    '''

    <DllImport("wlanapi.dll", SetLastError:=True)> _

    Private Shared Function WlanCloseHandle(hClientHandle As IntPtr, pReserved As IntPtr) As UInt32

    End Function

 

    '''

    ''' Lista di tutte le interfacce Wireless

    '''

    <DllImport("wlanapi.dll", SetLastError:=True)> _

    Private Shared Function WlanEnumInterfaces(hClientHandle As IntPtr, pReserved As IntPtr, ByRef ppInterfaceList As IntPtr) As UInt32

    End Function

 

    '''

    '''

    '''

    <DllImport("wlanapi.dll", SetLastError:=True)> _

    Private Shared Sub WlanFreeMemory(pmemory As IntPtr)

    End Sub

 

    '''

    ''' 

    '''

    Public Enum WLAN_INTERFACE_STATE As Integer

        wlan_interface_state_not_ready = 0

        wlan_interface_state_connected

        wlan_interface_state_ad_hoc_network_formed

        wlan_interface_state_disconnecting

        wlan_interface_state_disconnected

        wlan_interface_state_associating

        wlan_interface_state_discovering

        wlan_interface_state_authenticating

    End Enum

 

    '''

    ''' 

    '''

    <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _

    Public Structure WLAN_INTERFACE_INFO

        ''' GUID->_GUID

        Public InterfaceGuid As Guid

 

        ''' WCHAR[256]

        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> _

        Public strInterfaceDescription As String

 

        ''' WLAN_INTERFACE_STATE->_WLAN_INTERFACE_STATE

        Public isState As WLAN_INTERFACE_STATE

    End Structure

    '''

    ''' 

    '''

    <StructLayout(LayoutKind.Sequential)> _

    Public Structure WLAN_INTERFACE_INFO_LIST

        Public dwNumberofItems As Int32

        Public dwIndex As Int32

        Public InterfaceInfo As WLAN_INTERFACE_INFO()

 

        Public Sub New(pList As IntPtr)

 

            dwNumberofItems = Marshal.ReadInt32(pList, 0)

 

 

            dwIndex = Marshal.ReadInt32(pList, 4)

 

 

            InterfaceInfo = New WLAN_INTERFACE_INFO(dwNumberofItems - 1) {}

 

            For i As Integer = 0 To dwNumberofItems - 1

 

                Dim pItemList As New IntPtr(pList.ToInt32() + (i * 532) + 8)

 

 

                Dim wii As New WLAN_INTERFACE_INFO()

                wii = CType(Marshal.PtrToStructure(pItemList, GetType(WLAN_INTERFACE_INFO)), WLAN_INTERFACE_INFO)

                InterfaceInfo(i) = wii

            Next

        End Sub

    End Structure

 

 

 

 

 

    Private Function getStateDescription(state As WLAN_INTERFACE_STATE) As String

        Dim stateDescription As String = String.Empty

        Select Case state

            Case WLAN_INTERFACE_STATE.wlan_interface_state_not_ready

                stateDescription = "Non presente"

                Exit Select

            Case WLAN_INTERFACE_STATE.wlan_interface_state_connected

                stateDescription = "Connesso"

                Exit Select

            Case WLAN_INTERFACE_STATE.wlan_interface_state_ad_hoc_network_formed

                stateDescription = "first node in an adhoc network"

                Exit Select

            Case WLAN_INTERFACE_STATE.wlan_interface_state_disconnecting

                stateDescription = "In fase di disconnessione"

                Exit Select

            Case WLAN_INTERFACE_STATE.wlan_interface_state_disconnected

                stateDescription = "Disconesso"

                Exit Select

            Case WLAN_INTERFACE_STATE.wlan_interface_state_associating

                stateDescription = "Associato"

                Exit Select

            Case WLAN_INTERFACE_STATE.wlan_interface_state_discovering

                stateDescription = "discovering"

                Exit Select

            Case WLAN_INTERFACE_STATE.wlan_interface_state_authenticating

                stateDescription = "Autenticazione"

                Exit Select

        End Select

 

        Return stateDescription

    End Function

 

C#

///

        /// Apertura alla connessione al server

        ///

        [DllImport("wlanapi.dll", SetLastError = true)]

        private static extern UInt32 WlanOpenHandle(UInt32 dwClientVersion,

                IntPtr pReserved, out UInt32 pdwNegotiatedVersion,

                out IntPtr phClientHandle);

 

        ///

        /// Chiusura connessione al server

        ///

        [DllImport("wlanapi.dll", SetLastError = true)]

        private static extern UInt32 WlanCloseHandle(IntPtr hClientHandle,

                                                     IntPtr pReserved);

 

        ///

        /// Lista di tutte le interfacce Wireless

        ///

        [DllImport("wlanapi.dll", SetLastError = true)]

        private static extern UInt32 WlanEnumInterfaces(IntPtr hClientHandle,

                       IntPtr pReserved, out IntPtr ppInterfaceList);

 

        ///

        ///

        ///

        [DllImport("wlanapi.dll", SetLastError = true)]

        private static extern void WlanFreeMemory(IntPtr pmemory);

 

        ///

        /// 

        ///

        public enum WLAN_INTERFACE_STATE : int

        {

            wlan_interface_state_not_ready = 0,

            wlan_interface_state_connected,

            wlan_interface_state_ad_hoc_network_formed,

            wlan_interface_state_disconnecting,

            wlan_interface_state_disconnected,

            wlan_interface_state_associating,

            wlan_interface_state_discovering,

            wlan_interface_state_authenticating

        };

 

        ///

        /// 

        ///

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]

        public struct WLAN_INTERFACE_INFO

        {

            /// GUID->_GUID

            public Guid InterfaceGuid;

 

            /// WCHAR[256]

            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]

            public string strInterfaceDescription;

 

            /// WLAN_INTERFACE_STATE->_WLAN_INTERFACE_STATE

            public WLAN_INTERFACE_STATE isState;

        }

        ///

        /// 

        ///

       [StructLayout(LayoutKind.Sequential)]

        public struct WLAN_INTERFACE_INFO_LIST

        {

            public Int32 dwNumberofItems;

            public Int32 dwIndex;

            public WLAN_INTERFACE_INFO[] InterfaceInfo;

 

            public WLAN_INTERFACE_INFO_LIST(IntPtr pList)

            {

                

                dwNumberofItems = Marshal.ReadInt32(pList, 0);

 

               

                dwIndex = Marshal.ReadInt32(pList, 4);

 

                

                InterfaceInfo = new WLAN_INTERFACE_INFO[dwNumberofItems];

 

                for (int i = 0; i < dwNumberofItems; i++)

                {

                   

                    IntPtr pItemList = new IntPtr(pList.ToInt32() + (i * 532) + 8);

 

                   

                    WLAN_INTERFACE_INFO wii = new WLAN_INTERFACE_INFO();

                    wii = (WLAN_INTERFACE_INFO)Marshal.PtrToStructure(pItemList,

                        typeof(WLAN_INTERFACE_INFO));

                    InterfaceInfo[i] = wii;

                }

            }

        }

 

       

 

        //************************************************************

      

        private string getStateDescription(WLAN_INTERFACE_STATE state)

        {

            string stateDescription=string.Empty;

            switch (state)

            {

                case WLAN_INTERFACE_STATE.wlan_interface_state_not_ready:

                    stateDescription = "Non presente";

                    break;

                case WLAN_INTERFACE_STATE.wlan_interface_state_connected:

                    stateDescription = "Connesso";

                    break;

                case WLAN_INTERFACE_STATE.wlan_interface_state_ad_hoc_network_formed:

                    stateDescription = "first node in an adhoc network";

                    break;

                case WLAN_INTERFACE_STATE.wlan_interface_state_disconnecting:

                    stateDescription = "In fase di disconnessione";

                    break;

                case WLAN_INTERFACE_STATE.wlan_interface_state_disconnected:

                    stateDescription = "Disconesso";

                    break;

                case WLAN_INTERFACE_STATE.wlan_interface_state_associating:

                    stateDescription = "Associato";

                    break;

                case WLAN_INTERFACE_STATE.wlan_interface_state_discovering:

                    stateDescription = "discovering";

                    break;

                case WLAN_INTERFACE_STATE.wlan_interface_state_authenticating:

                    stateDescription = "Autenticazione";

                    break;

            }

 

            return stateDescription;

        }






Ora dobbiamo scrivere la funzione che verrà richiamata nell’evento click del pulsante e che dovrà visualizzare le informazioni della scheda tramite l’utilizzo delle API.
Qui di seguito il frammento di codice per il codice VB.Net e C#.




VB.Net

Private Sub OttieniListaWifi()

        Dim serviceVersion As UInteger = 0

        Dim handle As IntPtr = IntPtr.Zero

        If WlanOpenHandle(WLAN_API_VERSION_2_0, IntPtr.Zero, serviceVersion, handle) = ERROR_SUCCESS Then

            Dim ppInterfaceList As IntPtr = IntPtr.Zero

            Dim interfaceList As WLAN_INTERFACE_INFO_LIST

 

            If WlanEnumInterfaces(handle, IntPtr.Zero, ppInterfaceList) = ERROR_SUCCESS Then

 

                interfaceList = New WLAN_INTERFACE_INFO_LIST(ppInterfaceList)

 

 

                For i As Integer = 0 To interfaceList.dwNumberofItems - 1

                    txtLista.Text = interfaceList.InterfaceInfo(i).strInterfaceDescription + " " + getStateDescription(interfaceList.InterfaceInfo(i).isState)

                Next

 

 

                If ppInterfaceList <> IntPtr.Zero Then

                    WlanFreeMemory(ppInterfaceList)

                End If

            End If

 

            WlanCloseHandle(handle, IntPtr.Zero)

        End If

    End Sub

 

C#

private void OttieniListaWifi()

        {

            uint serviceVersion = 0;

            IntPtr handle = IntPtr.Zero;

            if(WlanOpenHandle(WLAN_API_VERSION_2_0, IntPtr.Zero,

                out serviceVersion, out handle) == ERROR_SUCCESS)

            {

                IntPtr ppInterfaceList = IntPtr.Zero;

                WLAN_INTERFACE_INFO_LIST interfaceList;

 

                if (WlanEnumInterfaces(handle, IntPtr.Zero,

                              out ppInterfaceList) == ERROR_SUCCESS)

                {

                   

                    interfaceList = new WLAN_INTERFACE_INFO_LIST(ppInterfaceList);

 

                  

                    for (int i = 0; i < interfaceList.dwNumberofItems; i++)

                        txtLista.Text = interfaceList.InterfaceInfo[i].strInterfaceDescription + " " + getStateDescription(interfaceList.InterfaceInfo[i].isState);

 

                 

                    if (ppInterfaceList != IntPtr.Zero)

                        WlanFreeMemory(ppInterfaceList);

                }

               

                WlanCloseHandle(handle, IntPtr.Zero);

            }

        }






Siamo giunti alla fine dell'articolo ora dovremmo scrivere il codice per l’evento click del pulsante che permetterà di avere informazioni sulla scheda.




VB.Net

  Private Sub BtnVisualizza_Click(sender As System.Object, e As System.EventArgs) Handles BtnVisualizza.Click

        OttieniListaWifi()

 

    End Sub

 

C#

private void BtnVisualizza_Click(object sender, EventArgs e)

        {

            OttieniListaWifi();

 

 

        }




Conclusioni

L’articolo ha voluto fornire al lettore l’utilizzo delle API per rilevare informazioni sulla scheda WiFi. Sempre più negli ultimi anni la scheda WiFi è divenuto un componente indispensabile al punto che si possono realizzare tools e programmi di sicurezza.