C'est un mini code de débutant qui permet de se connecté à un réseau avec votre configuration IP par l'intermédiaire d'un thread.
Permet de découvrir de façon assez simple le mécanisme des threads. Vous pouvez également supprimer le code présent et y ajouter
les fonctions que vous souhaitez.
En utilisant biensur, les procédures inter threads ou encore en ajouter d'autre.
Deux petites chose à faire :
- Desactiver option strict dans la propriété compiler de visual studio
- Renseigner votre configuration IP dans la procédure : "SelectConnexion"
Source / Exemple :
Imports System.Net
Imports System.Net.NetworkInformation
Imports System.Threading
Public Class Principal
'---------------------------------------------------------------------------------------------------
'INITIALISATION DES FONCTIONS INTER THREAD
'---------------------------------------------------------------------------------------------------
Delegate Sub SetMessageCallback(ByVal [Message] As String)
Delegate Sub SetProgressBarCallback(ByVal [Valeur] As Integer)
Delegate Sub SetVisibleCallback(ByVal [Object] As Object, ByVal [Visible] As Boolean)
Delegate Sub SetBtnEnableCallback(ByVal [Object] As Object, ByVal [Enable] As Boolean)
Delegate Sub SetClearCallback(ByVal [Object] As Object, ByVal [Etat] As Boolean)
'---------------------------------------------------------------------------------------------------
'DECLARATION DU THREAD PRINCIPAL
'---------------------------------------------------------------------------------------------------
Public ThreadConnexion As New Threading.Thread(AddressOf SelectConnexion)
#Region "Thread"
#Region "Procédures inter-Threads"
Private Sub SetClear(ByVal [Object] As Object, ByVal [Etat] As Boolean)
'Efface un objet
If [Object].InvokeRequired Then
Dim d As New SetClearCallback(AddressOf SetClear)
Me.Invoke(d, New Object() {[Object], [Etat]})
Else
If [Etat] = True Then
[Object].clear()
End If
End If
End Sub
Private Sub MessageInfo(ByVal [Message] As String)
'Affiche un message d'info
If Me.txtInfo.InvokeRequired Then
Dim d As New SetMessageCallback(AddressOf MessageInfo)
Me.Invoke(d, New Object() {[Message]})
Else
If Me.txtInfo.Text = String.Empty Then
Me.txtInfo.Text = [Message]
Else
Me.txtInfo.Text &= vbCrLf & [Message]
End If
End If
End Sub
Private Sub SetProgressBar(ByVal [Value] As Integer)
'Modifie la valeur de la progressbar
If Me.PB1.InvokeRequired Then
Dim d As New SetProgressBarCallback(AddressOf SetProgressBar)
Me.Invoke(d, New Object() {[Value]})
Else
PB1.Value = [Value]
End If
End Sub
Private Sub SetVisible(ByVal [Object] As Object, ByVal [Visible] As Boolean)
'Affichage d'un objet
If [Object].InvokeRequired Then
Dim d As New SetVisibleCallback(AddressOf SetVisible)
Me.Invoke(d, New Object() {[Object], [Visible]})
Else
[Object].Visible = [Visible]
End If
End Sub
Private Sub SetBtnEnable(ByVal [Object] As Object, ByVal [Enable] As Boolean)
'Active/désactive un objet
If [Object].InvokeRequired Then
Dim d As New SetBtnEnableCallback(AddressOf SetBtnEnable)
Me.Invoke(d, New Object() {[Object], [Enable]})
Else
If [Enable] = True Then
[Object].Enabled = True
ElseIf [Enable] = False Then
[Object].Enabled = False
End If
End If
End Sub
#End Region
#Region "Selection du réseau"
Private Sub SelectConnexion()
While ThreadConnexion.ThreadState = ThreadState.Running
SetBtnEnable(btnCI, False)
SetVisible(PB1, True)
SetVisible(lblAnalyse, True)
SetClear(txtInfo, True)
SetProgressBar(0)
MessageInfo("---------------------------------------------------------")
MessageInfo("Configuration adresse IP")
Shell("netsh interface ipv4 set address name=Wireless static 192.168.0.2 255.255.255.0 192.168.0.1", AppWinStyle.Hide)
Thread.Sleep(2000)
SetProgressBar(25)
MessageInfo("Configuration DNS")
Shell("netsh interface ipv4 set dnsserver name=Wireless static 192.168.0.1 primary")
Thread.Sleep(2000)
SetProgressBar(50)
MessageInfo("Connexion réseau San-fil")
Shell("netsh wlan connect name=Wireless ssid=SSID")
MessageInfo("Activation des paramètres")
MessageInfo("---------------------------------------------------------")
Thread.Sleep(4000)
SetProgressBar(75)
SetProgressBar(100)
Thread.Sleep(100)
SetBtnEnable(btnCI, True)
SetVisible(PB1, False)
SetVisible(lblAnalyse, False)
Me.ThreadConnexion.Suspend()
End While
End Sub
Private Sub Selection(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCI.Click
Cursor.Current = Cursors.WaitCursor
If ThreadConnexion.ThreadState = ThreadState.Unstarted Then
ThreadConnexion.Start()
ElseIf ThreadConnexion.ThreadState = ThreadState.Suspended Then
ThreadConnexion.Resume()
End If
Cursor.Current = Cursors.Default
End Sub
#End Region
#End Region
End Class
Conclusion :
Inspiré pour les threads du code de slyderkiller :
http://www.vbfrance.com/codes/REDIMENSIONNEMENT-PHOTOS-LOTS-MULTITACHES_42762.aspx
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.