Quelques procédures

Voici quelques procédures et fonctions utiles prêtes à l'emploi. Certaines sont très complexes, je les ai trouvées sur Internet, d'autres demandent trop de réflexion pour les réécrire. Je les ai donc conservées pour les retrouver au besoin.

1 - Interdire deux instances d'une application

Dans Visual Basic 2008, il suffit de cocher la case "Application à instance unique" dans les propriétés de "My Project", onglet "Application".
Cependant, aucun message n'est affiché lorsqu'on clique une deuxième fois sur l'exécutable de l'application. C'est pourquoi je préfère utiliser la routine ci-dessous.
Cette portion de code doit être placée de préférence dans la procédure "Sub Main", en tout cas, avant le chargement de la première feuille.
Associée à la fonction "PrevInstance", elle vérifie si une instance de l'application est déjà ouverte. Si c'est le cas, un message d'erreur est affiché et l'application prend fin.
Dim Texte As String
Texte = "Une instance de l'application est déjà ouverte."
If PrevInstance() Then
  MessageBox.Show(Texte, "Ouverture de l'application",
MessageBoxButtons.OK, MessageBoxIcon.Error)
  End
End If

Public Function PrevInstance() As Boolean
  If UBound(Diagnostics.Process.GetProcessesByName
(Diagnostics.Process.GetCurrentProcess.ProcessName))> 0 Then
    Return True
  Else
    Return False
  End If
End Function

2 - Lister une série de fichiers d'un dossier

Cette procédure enregistre dans le tableau dynamique "Liste()" tous les fichiers répondant au critère souhaité (ici il s'agit de l'extension ".txt"). Cette liste commence à l'indice zéro.
"Dir" retourne le répertoire courant. Attention, "Directory" appartient à l'espace de noms "System.IO", il faudra donc importer cet espace.
"Fic" retient les fichiers souhaités. Enfin, on pourra utiliser la liste par exemple dans une boucle For...Next (Prévoir le cas où la liste est vide).
Dim Dir, Fic As String
Dir = Directory.GetCurrentDirectory
Fic = "*.txt"
Dim liste() As String = Directory.GetFiles(Dir, Fic)
For i = 0 To UBound(liste)
  ...
Next
Note : La procédure retient les fichiers à extention ".txt", mais également tous ceux dont l'extension, plus longue, commence par ".txt", comme".txt1" etc...
Il convient donc de traiter les chaînes de caractères plus finement si nécessaire.

3 Déterminer la version d'un système d'exploitation

Cette partie de code permet de déterminer l'OS sur lequel est installé le programme.
La variable OSVersion contient la ligne suivante (qui peut légèrement différer selon la version) :
Microsoft Version NT 5.1 2600 Service Pack 2
' Si l'OS est sous Windows XP
Microsoft Version NT 6.0.6000.0
' Si l'OS est sous Vista de base
Microsoft Version NT 6.0.6001 Service Pack 1
' Si l'OS est sous Vista service Pack 1

Il suffit donc de détecter la valeur "5" ou "6" de la façon suivante :

Dim VersionOS As String = Environment.OSVersion.VersionString
VersionOS = Mid(VersionOS, 22,1)
If VersionOS = "5" Then
  ... ' On est sous XP
Else
  ... ' On est sous Vista
EndIf

J'ai bien entendu simplifié le code et le raisonnement en ne considérant que 2 versions de Windows parmi les plus courantes en 2008.



Statistiques :      Conformité :  Valid XHTML 1.1 © Christian Soulié
Dernière mise à jour le 14 avril 2010.
Finaliser une application -  Mes réalisations