FAQ VB.NETConsultez toutes les FAQ
Nombre d'auteurs : 37, nombre de questions : 240, dernière mise à jour : 12 mai 2018 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.
- Comment obtenir la version de mon application ?
- Comment obtenir la version du framework .NET en cours ?
- Comment obtenir la version de l'OS en cours ?
- Comment obtenir le répertoire d'exécution de mon application ?
- Comment obtenir le répertoire courant ?
- Comment obtenir le répertoire système ?
- Comment obtenir le nom de l'utilisateur dont la session est en cours ?
- Comment obtenir la quantité de mémoire physique allouée à mon application ?
- Comment obtenir la ligne de commande de l'application ?
- Comment obtenir les variables d'environement ?
- Comment obtenir les chemins des répertoires spéciaux comme "Mes Documents" ?
- Comment obtenir la liste des lecteurs logiques ?
- Comment ne lancer qu'une seule instance de mon application ?
- Comment générer des nombres aléatoires ?
- Comment lancer un processus ?
- Comment ouvrir un fichier avec l'application associée à son extension ?
- Comment rediriger la sortie standard d'un processus ?
- Comment lister les processus en cours d'éxécution ?
- Comment arrêter un processus ?
- Comment convertir un objet d'un type de base en un objet d'un autre type de base ?
- Comment lire et écrire des données dans la console ?
- Comment fonctionne le Garbage Collector ?
- Comment forcer la libération de la mémoire par le Garbage Collector ?
- Comment puis-je appeler une fonction présente dans une DLL win32 ?
- Comment instancier un caractère nul ?
- Comment vérifier la validité d'une adresse IP ?
- Comment utiliser des fichiers ressources dans un exe/dll ?
- Comment écrire dans le journal des évènements des services Windows ?
- Comment émettre un bip dans un programme ?
- Comment obtenir le nom de la machine ?
- Comment connaître le nombre d'écrans connectés à l'ordinateur ?
- Comment connaître le pourcentage d'espace disque de vos disques durs ?
- Comment déterminer le mode de démarrage de la machine ?
- Comment détecter si il y a un cd/dvd dans un lecteur ?
- Comment connaître le nombre de processeurs que possède la machine ?
- Comment tester si l'utilisateur de la session fait partie du groupe d'un domaine ?
- Comment récupérer l'analyse du taux de défragmentation d'un disque dur ?
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 |
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) |
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) |
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)) |
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) |
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) |
On utilise la propriété UserName de la classe Environment
Code vb.net : | Sélectionner tout |
Console.WriteLine("Nom utilisateur = {0}", Environment.UserName)
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)
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)
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 |
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 |
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 |
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 |
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 |
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 |
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.
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 |
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. |
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() |
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() |
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") |
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 |
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 |
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" |
Code vb.net : | Sélectionner tout |
1 2 | Dim s as String = "35000" Dim i as Integer = Integer.Parse(s) |
Code vb.net : | Sélectionner tout |
1 2 | Dim s as string = "35000" Dim i as Integer = CType(s, Integer) |
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) |
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 |
- 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.
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 ?
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 conséquent, ne le faites pas à moins d'être un expert du Garbage Collector.
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 |
Code vb.net : | Sélectionner tout |
Dim c As Char = Convert.ToChar(0)
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 |
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 |
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") |
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 |
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) |
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) |
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) |
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 |
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 |
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 |
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) |
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 |
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 |
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 çaLes 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 © 2024 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.