Comment faire si...

Selkis

Vous trouverez sur cette partie des bouts de code utiles.

- Titre : Comment faire si...

- Auteur : Selkis

- Parution : 8 mars 2005

- Mise à jour : 1 janvier 2013

- Licence : 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 ® 2005 Selkis. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Récupérer des infos à partir du Registre

- I-A. Récupérer le nom du système d'exploitation

- I-B. Récupérer le nom du processeur

- I-C. Récupérer le nom de la carte

- I-D. Récupérer la liste des logiciels installés

- I-E. Récupérer les informations de valeurs d'internet Explorer (IE)

- II. WMI

- II-A. Récupérer les infos sur le processeur

- II-B. Récupérer la mémoire physique libre

- II-C. Récupérer la version de votre bios

- III. Les fichiers texte

- III-A. Créer un nouveau fichier .txt et écrire dedans

- III-B. Lire un fichier .txt ligne à ligne

- III-C. Lire un fichier .txt en un seul flux

- IV. Liste de mes articles VB.Net :

I - Récupérer des infos à partir du Registre

I-A - Récupérer le nom du système d'exploitation

Imports Microsoft.Win32

Dim Reg As RegistryKey
Reg = Registry.LocalMachine.OpenSubKey("SOFTWARE", True).OpenSubKey("Microsoft", True).OpenSubKey("Windows NT", True)_
.OpenSubKey("CurrentVersion", True)
Textbox1.Text = Reg.GetValue("ProductName").ToString
Reg.Close()

I-B - Récupérer le nom du processeur

Imports Microsoft.Win32
Dim Reg As RegistryKey
Reg = Registry.LocalMachine.OpenSubKey("HARDWARE", True).OpenSubKey("DESCRIPTION", True).OpenSubKey("System", True) _
.OpenSubKey("CentralProcessor", True).OpenSubKey("0", True)
Textbox1.Text = Reg.GetValue("ProcessorNameString")
Reg.Close()

I-C - Récupérer le nom de la carte

Imports Microsoft.Win32

'récupère le chemin de la première clé pour lire le nom de la carte vidéo
Dim Reg As RegistryKey
Dim chaine As String
Reg = Registry.LocalMachine.OpenSubKey("HARDWARE", True).OpenSubKey("DEVICEMAP", True).OpenSubKey("VIDEO", True)
chaine = Reg.GetValue("\device\video0")
Reg.Close()

'///découpage des clé et sous clé
'On commence par compter combien  de clé et de sous clé dans la chaîne
Dim tabcle() As String
Dim i, cpt As Integer
i = 0
Dim car As String = "\"
For i = 1 To Len(chaine)
If Mid(chaine, i, 1) = car Then
cpt = cpt + 1
End If
Next
'redimension du tableau des clé
ReDim tabcle(cpt)

'mise en mémoire des clés
Dim pos, j As Integer
pos = InStr(chaine, "\", CompareMethod.Binary)
Do While pos <> 0
If pos <> 1 Then 'si le premier caractère est "\" on ne le prend pas
j = j + 1
tabcle(j) = Mid(chaine, 1, pos - 1)

End If
chaine = Mid(chaine, pos + 1)
pos = InStr(chaine, "\", CompareMethod.Binary)
Loop
'la derniere cle
tabcle(j + 1) = chaine

'Lecture du tableau des clés & sous clés
Dim reg2 As RegistryKey

'concatène les clés et sous clés (on pourrait faire beaucoup mieux)
reg2 = Registry.LocalMachine.OpenSubKey(UCase(tabcle(3)), True).OpenSubKey(tabcle(4), True).OpenSubKey(tabcle(5), True) _
.OpenSubKey(tabcle(6), True).OpenSubKey(tabcle(7), True).OpenSubKey(tabcle(8), True)

'récupère la valeur
textbox1.Text = reg2.GetValue("Device Description")

I-D - Récupérer la liste des logiciels installés

Ajouter sur une form une zone de liste nommée ListBox1 et un bouton.
Dans le code du bouton , ajouter le code ci dessous.

Imports Microsoft.win32

'------recup les log installés------'
Dim RegK As RegistryKey
RegK = Registry.LocalMachine.OpenSubKey("SOFTWARE", True).OpenSubKey("Microsoft", True)._
OpenSubKey("Windows", True).OpenSubKey("CurrentVersion", True).OpenSubKey("Uninstall", True)
Dim Tabsscle(RegK.SubKeyCount) As String
Tabsscle = RegK.GetSubKeyNames

'------Lecture du tableau des clé (tabsscle) defini plus haut------'
Dim j As Integer
ListBox1.Items.Clear() 'vide la zone de liste
For j = 0 To UBound(Tabsscle) 'parcour du tableau de l'element 0 jusqu'a la fin
'lecure de la clé J contenu dans le tableau tabsscle()
Dim regSK As RegistryKey
regSK = RegK.OpenSubKey(Tabsscle(j))
Dim TabValeur(regSK.ValueCount) As String

'----Lecture des valeurs de la sous clé-----'
'si il y a des valeur dans la clé en cours
If regSK.ValueCount <> 0 Then
'on les recuperes
TabValeur = regSK.GetValueNames
Dim i As Integer
'on parcours le tableau des valeurs
For i = 0 To UBound(TabValeur)
'si notre valeur = displayName alors
If TabValeur(i) = "DisplayName" Then
'on l'ajoute a la liste
ListBox1.Items.Add(regSK.GetValue(TabValeur(i)))
End If
Next i
End If
'ferme le registre souscle
regSK.Close()
Next j
'ferme le registre cle
RegK.Close()

Télécharger la source.

I-E - Récupérer les informations de valeurs d'internet Explorer (IE)

Créer un nouveau projet avec une form vierge.

Sur cette form ajouter les contrôles suivants :

1. Une zone de text nommée : Tcle (c'est la clé a lire)

2. Une zone de list nommée : Lvaleur (la liste des valeurs retourné par la clé)

3. Une zone de text nommée: Tvaleur (Donnée de la valeur sélectionnée dans la liste)

4. Un bouton

A déclarer !

Imports Microsoft.Win32

Dans le form_Load de la feuille ajouter le code suivant :

Tcle.Text = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer"

Dans l'événement clic() du bouton ajouter le code suivant :

Dim Reg As RegistryKey
Reg = Registry.LocalMachine.OpenSubKey("SOFTWARE", True).OpenSubKey("Microsoft", True)_
.OpenSubKey("Internet Explorer", True)
'tableau de toute les valeurs contenues dans la cle
Dim Tabvaleur(Reg.ValueCount) As String
Tabvaleur = Reg.GetValueNames
'charge la liste des valeur a partir du tableau memoire
Dim j As Integer
Lvaleur.Items.Clear()
For j = 0 To UBound(Tabvaleur)
Lvaleur.Items.Add(Tabvaleur(j))
Next j
'ferme la clé
Reg.Close()

Dans l'événement SelectedIndexChanged de la zone de liste ajouter le code suivant :

Dim itemSelect As Integer
Dim ValEnCours As String
Dim Reg As RegistryKey
'recupere l'index de la valeur sélectionnée
itemSelect = Lvaleur.SelectedIndex
'recupere le nom de la valeur
ValEnCours = Lvaleur.Items.Item(itemSelect)
'ouvre la clé du Registre
Reg = Registry.LocalMachine.OpenSubKey("SOFTWARE", True).OpenSubKey("Microsoft", True)_
.OpenSubKey("Internet Explorer", True)
'obtient la valeur demandée
Tvaleur.Text = Reg.GetValue(ValEnCours).ToString

Télécharger la source.

II - WMI

II-A - Récupérer les infos sur le processeur

Imports System.Management

Dim sys As New ManagementObjectSearcher("Select * from Win32_Processor")
Dim infoProcesseur As ManagementObject
For Each infoProcesseur In sys.Get()
Textbox1.Text = "Description : " & infoProcesseur("Description").ToString() & vbCrLf & _
"Nom du Processeur : " & infoProcesseur("Name").ToString() & vbCrLf & "Vitesse réelle : " & _
infoProcesseur("CurrentClockSpeed").ToString() & vbCrLf & "Taille du Cache : " & _
infoProcesseur("L2CacheSize").ToString() & vbCrLf & "Type de socket : " & _
infoProcesseur("SocketDesignation").ToString() & vbCrLf & "Constructeur Processeur: " & _
infoProcesseur("Manufacturer").ToString()
Next

II-B - Récupérer la mémoire physique libre

Imports System.Management

'creation d'une instance de la classe ManagementObjectSearcher
Dim Sys As New ManagementObjectSearcher("Select * from Win32_ComputerSystem")
Dim info As ManagementObject
For Each info In Sys.Get()
'Récupération des information sur la memoire
Textbox1.Text = CInt(info3("TotalPhysicalMemory").ToString()) / 1024 & "Ko"
Next

II-C - Récupérer la version de votre bios

Imports System.Management

Dim req As New SelectQuery("Win32_bios")
Dim sys As New ManagementObjectSearcher(req)
Dim info As ManagementObject

For Each info In sys.Get()
Textbox1.Text = "Bios version: " & info("version").ToString()
Next

III - Les fichiers texte

III-A - Créer un nouveau fichier .txt et écrire dedans

Imports System.IO
Dim chemin As String
chemin = "fichier.txt" 'pour que le fichier soit créer a la racine du programme, sinon metre le chemin complet

Dim FsiEcrire As System.IO.StreamWriter

Dim chaine As String
Chaine= "ma chaine a ecrire"

Try
'ecriture du fichier
FsiEcrire = New System.IO.StreamWriter(chemin)
FsiEcrire.Write(chaine)
Catch ex As Exception
'message si erreur
MsgBox(ex.Message)
Finally
'dans tous les cas on ferme le fichier
If Not FsiEcrire Is Nothing Then FsiEcrire.Close()
End Try

III-B - Lire un fichier .txt ligne à ligne

Imports System.IO

'lecture du flux
Dim Monflux As Stream
Monflux = File.OpenRead(chemindufichier.txt)

'lecture ligne à ligne
Dim Maligne As StreamReader = New StreamReader(Monflux, System.Text.Encoding.ASCII)
Maligne.BaseStream.Seek(0, SeekOrigin.Begin)

'.peek défini le caractère suivant, si =-1 alors c'est qu'il n'y a plus de caractère
'la fin du fichier est donc atteinte
While Maligne.Peek() > -1
Dim rep As String = Maligne.Peek
Textbox1.Text = Textbox1.Text + Maligne.ReadLine() + vbNewLine
End While
Maligne.Close() 'on n'oublie pas de fermer le fichier

III-C - Lire un fichier .txt en un seul flux

'creation de l'objet fichier pour lire le flux

Dim FichierAlire As StreamReader

'Lecture du fichier

Try

FichierAlire = New System.IO.StreamReader(chemindufichier.txt)

TResFichier.Text = FichierAlire.ReadToEnd()

Catch ex As Exception

'message si erreur

MsgBox(ex.Message)

Finally

If Not FichierAlire Is Nothing Then FichierAlire.Close()

End Try

IV - Liste de mes articles VB.Net :

- Accueil de la section VB.NET.

- Utilisation d'une base Access en mode déconnecté avec Ado.Net.

- Lecture et écriture d'un fichier XML à schéma connu.

- Création d'une application de type Service Windows.

- Création d'un logo xara3d en utilisant un service Web distant.