FAQ VB.NETConsultez toutes les FAQ

Nombre d'auteurs : 36, nombre de questions : 239, dernière mise à jour : 24 mai 2015  Ajouter une question

 

Cette FAQ a été réalisée pour répondre aux questions les plus fréquemment posées sur le forum Développement DotNET

Je tiens à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle contient sont correctes. Les auteurs font le maximum, mais l'erreur est humaine. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, lisez ceci.

Sur ce, je vous souhaite une bonne lecture.


SommaireSystème (37)
précédent sommaire suivant
 

Pour obtenir la version de mon application, on utilise la classe System.Diagnostics.FileVersionInfo

Code vb.net : Sélectionner tout
1
2
Dim ver As FileVersionInfo = FileVersionInfo.GetVersionInfo(Environment.GetCommandLineArgs()(0)) 
Dim MyVer as String = ver.FileMajorPart & "." & ver.FileMinorPart & "." & ver.FileBuildPart & "." & ver.FilePrivatePart
Pour obtenir la version d'un fichier (EXE, DLL, OCX, etc..) quelconque, il suffit de passer le chemin du fichier à la fonction GetVersionInfo

Mis à jour le 30 novembre 2013 abelman

On utilise la propriété Version de la classe System.Environment.

Code vb.net : Sélectionner tout
1
2
3
'Version Framework 
Dim ver as Version = Environment.Version 
Console.WriteLine("Version Framework = {0}", ver)

Mis à jour le 30 novembre 2013 abelman

On utilise la propriété OSVersion de la classe System.Environment.

Code vb.net : Sélectionner tout
1
2
3
'Version du système d'exploitation 
Dim ver as Version = Environment.OSVersion 
Console.WriteLine("Version Framework = {0}", ver)

Mis à jour le 30 novembre 2013 freegreg

On utilise la fonction GetCommandLineArgs de la classe System.Environment

Code vb.net : Sélectionner tout
1
2
3
4
5
' Chemin de l'éxécutable 
' Pour les WinForm, on peut aussi utiliser Application.ExecutablePath 
Dim exepath As String = Environment.GetCommandLineArgs()(0) 
' Répertoire de l’exécutable 
Dim exedir As String = exepath.Substring(0, exepath.LastIndexOf("\"c))

Mis à jour le 30 novembre 2013 abelman

On utilise la propriété CurrentDirectory de la classe Environment

Code vb.net : Sélectionner tout
1
2
' Répertoire courant 
Console.WriteLine("Le répertoire courant est : {0}", Environment.CurrentDirectory)

Mis à jour le 30 novembre 2013 abelman

On utilise la propriété SystemDirectory de la classe Environment

Code vb.net : Sélectionner tout
1
2
' Répertoire système 
Console.WriteLine("Répertoire système = {0}", Environment.SystemDirectory)

Mis à jour le 30 novembre 2013 abelman

On utilise la propriété UserName de la classe Environment

Code vb.net : Sélectionner tout
Console.WriteLine("Nom utilisateur = {0}", Environment.UserName)

Mis à jour le 30 novembre 2013 abelman

On utilise la propriété WorkingSet de la classe Environment

Code vb.net : Sélectionner tout
Console.WriteLine("Mémoire allouée au process en cours = {0} octets", Environment.WorkingSet)

Mis à jour le 30 novembre 2013 abelman

On utilise la propriété CommandLine de la classe Environment pour avoir la ligne entière dans une chaine de caractères

Code vb.net : Sélectionner tout
Console.WriteLine("La ligne de commande est : {0}", Environment.CommandLine)
On utilise GetCommandLineArgs pour obtenir un tableau de chaines de caractères contenant chaque argument.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
'Arguments de ligne de commande 
Console.WriteLine("Arguments de ligne de commande") 
Dim i As Integer 
Dim args As String() = Environment.GetCommandLineArgs() 
Dim j As Integer = args.Length 
For i = 0 To j - 1 
    Console.WriteLine("Args({0}) = {1}", i, args(i)) 
Next

Mis à jour le 30 novembre 2013 abelman

On utilise la fonction GetEnvironmentVariables de la classe Environment.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
Dim env As IDictionary = Environment.GetEnvironmentVariables() 
' Pour afficher une variable dont on connait le nom 
Console.WriteLine("USERNAME = {0}", env("USERNAME")) 
' Pour lister toutes les variables 
Dim en As IEnumerator = env.Keys.GetEnumerator() 
While en.MoveNext 
    Console.WriteLine("{0} = {1}", en.Current, env(en.Current())) 
End While

Mis à jour le 30 novembre 2013 abelman

On utilise la fonction GetFolderPath de la classe Environment avec l'énumération Environment.SpecialFolder

Code vb.net : Sélectionner tout
1
2
3
4
5
6
' Répertoires spéciaux 
Console.WriteLine("Répertoires spéciaux") 
Dim specfolderenum As Array = [Enum].GetValues(GetType(Environment.SpecialFolder)) 
For i As Integer = 0 To specfolderenum.Length - 1 
    Console.WriteLine(Environment.GetFolderPath(CType(specfolderenum.GetValue(i), Environment.SpecialFolder))) 
Next

Mis à jour le 30 novembre 2013 abelman

On utilise la fonction GetLogicalDrives de la classe Environment

Code vb.net : Sélectionner tout
1
2
3
4
5
6
' Lecteurs logiques 
Console.WriteLine("Lecteurs logiques") 
Dim drives() As String = Environment.GetLogicalDrives() 
For i As Integer = 0 To drives.Length - 1 
    Console.WriteLine(drives(i)) 
Next

Mis à jour le 30 novembre 2013 abelman

Il arrive souvent de souhaiter interdire à une application d'avoir plusieurs instances lancées.
Voici une petite classe qui lors du démarrage de l'application, s'assure qu'elle n'est pas déjà en cours d'exécution.
Elle utilise un objet mutex nommé, donc potentiellement visible par tous les autres processus.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Imports System.Threading 
  
Class SingleInstanceApp 
    Implements IDisposable 
  
    Private _siMutex As Mutex 
    Private _siMutexOwned As Boolean 
  
    Public Sub New(ByVal name As String) 
        _siMutex = New Mutex(False, name) 
        _siMutexOwned = False 
    End Sub 
  
    Public Function IsRunning() As Boolean 
        _siMutexOwned = _siMutex.WaitOne(0, True) 
        Return Not (_siMutexOwned) 
    End Function 
  
    Public Sub Dispose() Implements System.IDisposable.Dispose 
        If _siMutexOwned Then 
            _siMutex.ReleaseMutex() 
        End If 
    End Sub 
  
End Class
Pour utiliser notre classe, il suffit de procéder ainsi dans le Main de notre application.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
Shared Sub Main() 
    Dim app As SingleInstanceApp = New SingleInstanceApp("{123456789 - ABCD - EFEG - XXXX}") 
    Try 
        If app.IsRunning Then 
            MessageBox.Show("Application déjà lancée") 
        Else 
            Application.Run(New Form1) 
        End If 
    Finally 
        CType(app, IDisposable).Dispose() 
    End Try 
End Sub
Si une application lambda en cours d'exécution crée un mutex ayant le même nom que celui de notre application, cette dernière ne pourra plus se lancer.
Elle se comportera comme si une autre instance de l'application était déjà en cours.
Il existe une technique pour l'éviter mais cela sort de notre sujet. Veuillez donc à choisir un nom assez compliqué pour votre mutex.

Mis à jour le 29 octobre 2013 abelman

La classe System.Random nous permet de générer des nombres aléatoires. Il s'agit en fait de nombres pseudo-aléatoires, car la séquence générée dépend de l'initialisation.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
  
    ' Dim rnd As New Random(100) ' Pour générer toujours la même séquence, on passe la même valeur au constructeur. 
  
    ' Initialisation par défaut basée sur le temp. La séquence est différente à chaque fois. 
    Dim rnd As New Random 
  
    ' Génération de 15 nombres aléatoires compris entre 0 et 255 (Type Byte) 
    Dim rndNumbers As Byte() = New Byte(14) {} 
    rnd.NextBytes(rndNumbers) 
    ListBox1.Items.Clear() 
    For i As Byte = 0 To 14 
        ListBox1.Items.Add(rndNumbers(i)) 
        ' On peut aussi faire un modulo pour n'obtenir que des nombres entre 0 et 100 par exemples 
        ListBox2.Items.Add(IIf(rndNumbers(i) > 100, rndNumbers(i) Mod 100, rndNumbers(i))) 
    Next 
  
    ' Pour Générer des nombres aléatoires de type Integer 
    Dim i As Integer = rnd.Next() 
    Dim j As Integer = rnd.Next(500, 1000) 'j sera compris entre 500 et 1000 
  
    ' Pour générer des nombres aléatoires de type Double 
    ' d sera compris entre 0,0 et 1,0. 
    ' Il suffit de combiner cet appel à celui de Next() pour avoir des doubles supérieurs à 1,0 
    Dim d As Double = rnd.NextDouble() 
End Sub

Mis à jour le 30 novembre 2013 abelman

Pour lancer un processus depuis notre application, on utilise la classe System.Diagnostics.Process
Exemple : lancer une instance de internet explorer qui ouvre www.developpez.com

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
'Instance de la classe Process 
Dim proc As New System.Diagnostics.Process() 
' Nom de l'executable à lancer 
proc.StartInfo.FileName = "iexplore.exe" 
' Arguments à passer à l'exécutable à lancer 
proc.StartInfo.Arguments="http://www.developpez.com" 
' Démarrage du processus 
proc.Start() 
' On libère les ressources dont on a plus besoin. 
proc.Close() 'Attention Close ne met pas fin au processus.

Mis à jour le 30 novembre 2013 abelman freegreg

On peut ouvrir des documents dont l'extension est connue du shell windows comme les .txt ou les .doc avec la classe System.Diagnostics.Process
Exemple : Ouverture d'un fichier texte .txt.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
'Instance de la classe System.Diagnostics.Process 
Dim proc As New Process() 
' Nom du fichier dont l'extension est connue du shell à ouvrir 
proc.StartInfo.FileName = "monfichier.txt" 
' Démarrage du processus. Notepad (si il est associé aux fichiers .txt) sera alors lancé et ouvrira le fichier monfichier.txt 
proc.Start() 
' On libère les ressources 
proc.Close()

Mis à jour le 30 novembre 2013 abelman

Il est possible de rediriger la sortie standard d'un processus et de l'afficher dans un TextBox multiligne par exemple.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim proc As New Diagnostics.Process 
' On désactive le shell 
proc.StartInfo.UseShellExecute = False 
' On redirige la sortie standard 
proc.StartInfo.RedirectStandardOutput = True 
' On définit la commande 
proc.StartInfo.FileName = "mem.exe" 
' Démarrage de la commande 
proc.Start() 
' Lecture de la sortie de la commande 
Dim output As String = proc.StandardOutput.ReadToEnd() 
Console.WriteLine(output) 
' Attente de la fin de la commande 
proc.WaitForExit() 
' Libération des ressources 
proc.Close()

Mis à jour le 30 novembre 2013 abelman

Pour lister les processus en cours on utilise la fonction GetProcesses de la classe Process

Code vb.net : Sélectionner tout
1
2
3
4
' Pour tous les processus en cours sur l'ordinateur local 
Dim prc as System.Diagnostics.Process() = Process.GetProcesses() 
' Pour tous les processus notepad en cours sur l'ordinateur local 
Dim prc as System.Diagnostics.Process() = Process.GetProcessesByName("notepad")

Mis à jour le 30 novembre 2013 abelman

Pour arrêter un processus, il faut disposer d'un objet System.Diagnostics.Process qui représente le processus.

Code vb.net : Sélectionner tout
1
2
3
' Pour les applications consoles 
proc.Kill() 
proc.Close() ' Libération des ressources
Pour les applications WinForm il est préférable d'utiliser CloseMainWindow afin que l'application reçoive le message de fermeture et se ferme correctement.

Code vb.net : Sélectionner tout
1
2
3
' Pour les applications avec une interface graphique (et donc une pompe de messages) 
proc.CloseMainWindow() ' Si l'appel échoue, on peut alors forcer la fermeture avec Kill. 
proc.Close() ' Libération des ressources

Mis à jour le 30 novembre 2013 abelman

La classe System.Convert permet de convertir des objets de types de base. Il existe d'autres méthodes pour le faire mais l'avantage de la classe System.Convert est qu'elle est indépendante du langage utilisé.
System.Convert dispose d'une multitude de méthodes pour effectuer toutes les conversions possibles entre les types de bases.

Voici quelques exemples

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
'Conversion d'un entier vers une chaine de caractère 
Dim i as Integer = 10 
Dim s as string = Convert.ToString(i) 
  
' Conversion d'une chaine vers un entier 
i = Convert.ToInt32(s) 
' Notez que si la conversion ne peut se faire, une exception est levée. Ce serait le cas si s = "NonNumérique"
Il est aussi possible d'utiliser la méthode Parse de chaque type de base.

Code vb.net : Sélectionner tout
1
2
Dim s as String = "35000" 
Dim i as Integer = Integer.Parse(s)
On peut aussi utiliser l' opérateur de cast CType

Code vb.net : Sélectionner tout
1
2
Dim s as string = "35000" 
Dim i as Integer = CType(s, Integer)
Enfin les méthodes VB6 (pour la compatibilité, à éviter pour les nouveaux projets) sont toujours présentes.
Il s'agit de CBool, CInt, CStr, CSingle, etc.

Code vb.net : Sélectionner tout
1
2
Dim s as String = "35000" 
Dim i As Integer = CStr(s)

Mis à jour le 30 novembre 2013 abelman

Il vous faut utiliser la classe System.Console et les méthodes qui la composent.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
Public Class SaisiTexte 
  
    Private Shared _Texte As String 
  
    Public Shared Sub Main() 
        Console.WriteLine("Saisissez un texte: ") 
        _Texte = Console.ReadLine 
        Console.WriteLine("Vous avez écrit : " + _Texte) 
    End Sub 
  
End Class
Console.Writeline écrit par défaut sur
  • la console si il y en a une active ;
  • la fenêtre de debug (onglet Sortie - Déboguer) si l'application ne possède pas de console. Une application WinForm par exemple.

Mis à jour le 30 novembre 2013 abelman

Ce qui suit est extrait d'un échange sur le forum .NET.
C'est très schématique mais cela résume bien comment le .NET Framework s'y prend pour gérer la mémoire

Le .NET Framework : Salut OS, j'ai des trucs à lancer, j'peux te prendre de la ram ?
L'OS: Hé Salut ! Je t'en pris, sers-toi !
Le .NET Framework : Sympa mec. J't'en prend 50Mo maintenant, j'ai besoin que de 15 Mo,
mais comme ça je te dérange pas si j'ai besoin de plus.

.

Le .NET Framework : Hé l'OS, t'es short niveau mémoire ?
L'OS : Non non, tout va bien.
Le .NET Framework : Bon, alors je garde mes 50 Mo encore un peu.
L'OS : Oki.

.

SQL Server : Bonjour M. l'OS, j'ai un gros besoin de mémoire. au moins 200 Mo.
L'OS : Ben sers-toi donc.
SQL Server : Ouais mais y a plus que 180Mo !
L'OS : Ah OK, attend 2 millisecondes stp.
L'OS : Hé Framework, tu peux me rendre un peu de RAM ?
Le .NET Framework : No problemo, j'te fais ça tout de suite.
Le .NET Framework : Garbage Collector, soit un amour et va rendre de la mémoire à l'OS.
Garbage Collector : J'y cours patron.

C'est clair non ?

Mis à jour le 29 octobre 2013 Keihilin

Pour forcer le Garbage Collector à libérer la mémoire inutilisée par le .NET Framework, on peut appeler la méthode Collect de la classe GC.

Code vb.net : Sélectionner tout
System.GC.Collect()
Par contre, pour des raisons qui justifieraient à elles seules un article, il n'est pas conseillé d'appeler GC.Collect() directement.
Par conséquent, ne le faites pas à moins d'être un expert du Garbage Collector.

Mis à jour le 29 octobre 2013 Thomas Lebrun

Pour appeler une fonction présente dans une DLL, vous devez utiliser DllImport et vous devez toujours faire précéder le type de la méthode du mot clé extern (cela permet de spécifier que la méthode est appelée dans un fichier externe à l'application).
Vous devez aussi connaître :

  • le nom de la méthode ;
  • le type qu'elle renvoie ;
  • les paramètres qu'elle peut accepter.

Ces informations vous sont généralement fournies avec la documentation de la méthode désirée.

Voici un exemple :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
Imports System.Runtime.InteropServices 
  
Class Class1 
  
    Private Declare Function FlashWindow Lib "user32.dll" ( _ 
    ByVal hwnd As Integer, _ 
    ByVal bInvert As Integer) As Integer 
  
End Class
Cette méthode, extraite du fichier user32.dll, renvoie un entier et prend en paramètre 2 autres entiers.

Mis à jour le 29 octobre 2013 abelman

Code vb.net : Sélectionner tout
Dim c As Char = Convert.ToChar(0)
C'est aussi simple que cela.

Mis à jour le 29 octobre 2013 abelman

Avec les expressions régulières.
On utilise le namespace System.Text.RegularExpressions.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
Public Function CheckIpAddr(ByVal ipAddress As String) As Boolean 
  
    Dim re As String = "^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$" 
    Return Regex.IsMatch(ipAddress, re) 
  
End Function
Version sans expression régulière.
On se sert de la fonction Split de la classe String pour parser la chaine, puis on analyse les différentes sous-chaînes.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Public Function CheckIpAddrNoRegex(ByVal ipAddress As String) As Boolean 
  
    Dim ipPartList As String() 
  
    If ipAddress Is Nothing OrElse ipAddress = "" Then 
        Return False 
    End If 
  
    ipPartList = ipAddress.Split("."c) 
    If Not (ipPartList.Length = 4) Then 
        Return False 
    End If 
  
    Try 
        Dim ipPartNumber As Byte = Convert.ToByte(ipPartList(0)) 
        ipPartNumber = Convert.ToByte(ipPartList(1)) 
        ipPartNumber = Convert.ToByte(ipPartList(2)) 
        ipPartNumber = Convert.ToByte(ipPartList(3)) 
    Catch 
        Return False 
    End Try 
  
    Return True 
  
End Function

Mis à jour le 30 novembre 2013 abelman Louis-Guillaume Morand

Tout d'abord, un fichier de ressources, est un fichier qui comme son nom l'indique contient des ressources, qui vont être utilisées par votre application. Cela peut être potentiellement n'importe quel type de fichier, mais il s'agit généralement d'icônes, de fichiers textes, ou encore d'images. Ces différentes ressources vont être encapsulées dans un fichier qui portera en principe l'extension *.dll ou *.exe.
Premièrement, pour ajouter le fichier en tant que ressource :

  • Menu Projet / Propriétés., Onglet Resources. Ajouter Un fichier existant ;
  • Dans l'explorateur de solution (en haut à droite) sélectionner le fichier qui vient de s'y rajouter, puis dans ses propriétés (en bas à droite) dans Build Action indiquer Embedded ressources

Ensuite, pour utiliser la ressource dans le code (dans l'exemple c'est un fichier texte nommé fichier.txt) :

Code vb.net : Sélectionner tout
1
2
3
4
Imports System.Reflection 
  
Dim nameSpc As String = Reflection.Assembly.GetExecutingAssembly.GetName.Name.ToString 
Dim tempStream As Stream = Reflection.Assembly.GetExecutingAssembly.GetManifestResourceStream(NameSpc & "." & "fichier.txt")

Mis à jour le 30 novembre 2013 ThomasB

Tout simplement en utilisant les fonctionnalités offertes par l'espace de noms System.Diagnostics. Notamment la classe EventLog et sa méthode WriteEntry qui dispose d'une dizaine de surcharges. L'exemple suivant nécessite simplement que vous ayez déjà défini l'EventLog de votre Service, appelé ici MonJournal :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
Try 
    ' instructions à exécuter 
Catch ex As Exception 
    ' écrire l'erreur 
    MonJournal.WriteEntry(ex.Message,EventLogEntryType.Error) 
End Try

Mis à jour le 30 novembre 2013 neguib neo.51

Pour émettre un bip avec le haut parleur de la machine, il suffit d'utiliser la méthode Beep de la classe Console :

Code vb.net : Sélectionner tout
1
2
3
4
5
' Emet un simple bip 
Console.Beep() 
' Émet un bip à la fréquence 15000Hz pendant 2 secondes 
' A noter que la gamme audible de l'oreille humaine va de 16 à 20000Hz 
Console.Beep(15000, 2000)

Mis à jour le 29 octobre 2013 Jérôme Lambert

On utilise la propriété MachineName de la classe System.Environment :

Code vb.net : Sélectionner tout
1
2
3
' Nom de la machine 
Dim MachineName As String = Environment.MachineName  
Console.WriteLine("Nom de la machine = {0}", MachineName)

Mis à jour le 29 octobre 2013 Jérôme Lambert

On utilise la propriété MonitorCount de la classe SystemInformation :

Code vb.net : Sélectionner tout
1
2
3
' Nombre d'écrans connectés 
Dim MonitorCount As Integer = SystemInformation.MonitorCount  
Console.WriteLine("Nombre d'écrans connectés à l'ordinateur = {0}", MonitorCount)

Mis à jour le 30 novembre 2013 Jérôme Lambert

La classe DriveInfo peut nous donner les informations nécessaires afin de calculer le pourcentage d'espace libre de chaque disque dur :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
' Parcours de la liste des disques durs 
For Each CurrentDrive As DriveInfo In DriveInfo.GetDrives  
    ' Vérification qu'on a bien affaire à un disque dur de l'ordinateur 
    If CurrentDrive.DriveType = DriveType.Fixed Then  
        ' Calcul du pourcentage d'espace disque libre 
        Dim pourcentageLibre As Double = (CType(CurrentDrive.AvailableFreeSpace, Double) / CurrentDrive.TotalSize) * 100  
        Console.WriteLine("Espace libre de {0} >> {1}%", CurrentDrive.Name, Convert.ToInt16(pourcentageLibre))  
    End If  
Next

Mis à jour le 30 novembre 2013 Jérôme Lambert

On utilise la propriété BootMode de la classe SystemInformation. On obtient une des valeurs de l'énumération BootMode : FailSafe, FaileSafeWithNetwork ou Normal.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
' Mode de démarrage de la machine 
Select Case SystemInformation.BootMode 
    Case BootMode.Normal  
        Console.WriteLine("Tout est ok !")  
  
    Case BootMode.FailSafe  
        Console.WriteLine("Attention, on est en mode sans échec !")  
  
    Case BootMode.FailSafeWithNetwork  
        Console.WriteLine("Attention, on est en mode sans échec mais on a accès au réseau !")  
  
End Select

Mis à jour le 16 novembre 2013 Jérôme Lambert

On utilise la classe DriveInfo qui fournit des informations concernant entre autre des informations concernant les lecteurs CD/DVD :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim monDrive As String = "D:/"  
  
Try  
    Dim monDriveInfo As DriveInfo = New DriveInfo(monDrive)  
  
    ' Vérification qu'on a bien affaire à un lecteur CD/DVD 
    If monDriveInfo.DriveType = DriveType.CDRom Then  
        ' Vérification si il y a un cd dans le lecteur 
        If monDriveInfo.IsReady = True Then   
            Console.WriteLine("Lecteur identifié avec CD : {0}", monDriveInfo.VolumeLabel)  
        Else  
            Console.WriteLine("Lecteur identifié sans CD : {0}", monDriveInfo.Name)  
        End If  
    Else  
        Console.WriteLine("Ce lecteur n'est pas un lecteur CD/DVD !")  
    End If  
  
Catch generatedExceptionVariable0 As Exception  
    Console.WriteLine("Ceci n'est pas un lecteur !")  
End Try

Mis à jour le 29 octobre 2013 Jérôme Lambert

On utilise la propriété ProcessorCount de la classe System.Environment :

Code vb.net : Sélectionner tout
1
2
3
' Nombre de processeurs de la machine 
Dim countProc As Integer = Environment.ProcessorCount  
Console.WriteLine("Nombre processeurs = {0}", countProc)

Mis à jour le 30 novembre 2013 Jérôme Lambert

On utilisera la méthode IsInRole de la classe WindowsPrincipal afin de déterminer si l'utilisateur courant fait bien partie ou pas d'un groupe x du domaine auquel il est rattaché :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
' Vérification si un utilisateur appartient à un groupe de domaine donné 
Dim wp As WindowsPrincipal = New WindowsPrincipal(WindowsIdentity.GetCurrent)  
If wp.IsInRole("Developpez\Moderateur") = True Then  
    Console.WriteLine("L'utilisateur fait bien partie du groupe Developpez\Moderateur")  
Else  
    Console.WriteLine("L'utilisateur ne fait pas partie du groupe Developpez\Moderateur")  
End If

Mis à jour le 29 octobre 2013 Jérôme Lambert

La commande defrag c: -a permet de lancer l'analyse sur le disque dur C. Il suffit donc d'exécuter cette commande avec la classe Process et de récupérer la sortie standard.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim p As Process = Nothing 
Try 
    p = New Process 
    p.StartInfo.UseShellExecute = False 
    p.StartInfo.RedirectStandardOutput = True 
    p.StartInfo.FileName = "defrag" 
    p.StartInfo.Arguments = "c: -a" 
    p.Start() 
    If p.WaitForExit(60 * 1000) Then 
        MessageBox.Show(p.StandardOutput.ReadToEnd(), "StandardOutput") 
        p.Dispose() 
        p = Nothing 
    End If 
Catch ex As Exception 
    MessageBox.Show(ex.Message, "Exception") 
Finally 
    If p IsNot Nothing Then 
        If Not p.HasExited Then 
            p.Kill() 
        End If 
        p.Dispose() 
        p = Nothing 
    End If 
End Try

Mis à jour le 29 octobre 2013 Fayoul Jérôme Lambert

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique Microsoft DotNET : Hinault Romaric -