Cours VB.NETDate de mise à jour : 05/12/2010
X-M. Utiliser le 'Presse papier'
X-M-1. En VB 2003 (Framework 1)
X-M-1-a. Mettre dans le presse papier
X-M-1-b. Récupérer du presse papier
X-M-1-c. Exemple
X-M-1-d. Alternative
X-M-2. My.Computer.Clipboard à partir de VB 2005
X-M-3. TextBox et couper-coller
X-N. Paramètres de configuration (App.ini, registre, App.config)
X-N-1. Les Fichiers
X-N-2. Fichiers .INI
X-N-3. Registre
X-N-4. Fichier de configuration App.Config File de VB2003 (Framework 1)
X-N-5. Configuration par paramètres Settings de VB2005 (Framework 2)
X-N-6. Liaison propriétés-Settings de VB2005 (PropertyBinding)
X-O. Utiliser les 'Ressources'
X-O-1. Intérêt des ressources ?
X-O-2. Les types de ressources ?
X-O-3. Voir les ressources
X-O-4. Ajouter des ressources
X-O-5. Où se trouvent les ressources
X-O-6. Modifier une ressource
X-O-7. Utiliser une ressource dans le programme
X-O-8. Ressources localisées
X-O-9. Ressources liées ou incorporées
X-O-10. Comment cela marche ?
X-P. Où mettre les programmes et les données
X-P-1. Il faut séparer les données des programmes !!!
X-P-2. Sécurité
X-P-3. Quels répertoires utiliser ?
X-P-4. Obtenir le répertoire de l'exécutable et des données
X-P-5. Droits d'accès utilisateur dans Vista et Windows 7 : l'UAC
X-M. Utiliser le 'Presse papier'
On a tous coupé un bout de texte pour le coller à un autre endroit.
Pour cela on a utilisé le presse papier ou 'Clipboard' de Windows.
Comment faire cela par code?
Voyons cela en VB 2003 et VB 2005.
X-M-1. En VB 2003 (Framework 1)
X-M-1-a. Mettre dans le presse papier
Clipboard. SetDataObject (Texte)
|
il y a une surcharge:
Clipboard. SetDataObject (Texte, True )
|
Le second paramètre spécifie si les données doivent rester dans le Presse-papiers lorsque l'utilisateur quitte l'application.
X-M-1-b. Récupérer du presse papier
Dim iData As IDataObject
iData = Clipboard. GetDataObject ()
|
Pour la récupération, il faut s'occuper du format des données: si on récupère un BipMap et qu'on le colle dans un textbox, il y a problème!! On récupère donc un objet qui contient les données mais aussi des indications sur le format des données ;on peut tester ce format avant de 'coller'.
On récupère un objet de type IDataObject qui contient.
La méthode GetFormats permettant de connaître tous les formats contenus dans IDataObject
Dim myFormatsArray As String () = iData. GetFormats (False )
|
La méthode GetDataPresents permettant de savoir si un format est présent:
If iData. GetDataPresent (DataFormats. Text ) Then
|
La méthode GetData permettant de récupérer les données (paramètre: le format).
textBox2. Text = CType (iData. GetData (DataFormats. Text ), String )
|
Les différents formats:
DataFormats. Text
DataFormats. Rtf
DataFormats. Html
DataFormats. CommaSeparatedValue
DataFormats. Dif
DataFormats. BitMap
DataFormats. Dib
DataFormats. WaveAudio
. . .
|
X-M-1-c. Exemple
Mettre le texte sélectionné de TextBox1 dans le presse papier:
Un Button1 portant le texte "Copier" contient le code:
If textBox1. SelectedText < > " " Then
Clipboard. SetDataObject (textBox1. SelectedText )
End if
|
Remarque: si je voulais un button1 "Couper" il aurait fallu ajouter textBox1.SelectedText=""
Récupérer le texte du presse papier et le mettre dans TextBox2.
Un Button2 nommé "Coller" contient le code:
Dim iData As IDataObject = Clipboard. GetDataObject ()
If iData. GetDataPresent (DataFormats. Text ) Then
textBox2. Text = CType (iData. GetData (DataFormats. Text ), String )
Else
textBox2. Text = " Pas possible de récupérer. "
End If
|
X-M-1-d. Alternative
Au lieu d'utiliser l'objet Clipboard, on peut utiliser une méthode plus simple:
Le formulaire étant actif et la textbox ayant le Focus envoyez CTRL C avec SendKeys.Send pour couper, CTRL V pour coller: c'est Windows qui s'occupe de tout!!
X-M-2. My.Computer.Clipboard à partir de VB 2005
My.Computer.Clipboard : permet de récupérer des informations sur le contenu du presse-papier, de récupérer et de définir son contenu avec une certaine simplification.
On peut mettre du texte dans le presse-papier:
My. Computer . Clipboard . SetText (TextBox3. Text )
|
On peut même indiquer le format du texte (rtf, html, text, unicode..):
My. Computer . Clipboard . SetText (TextBox3. Text , TextDataFormat. Rtf )
|
Il existe aussi SetImage, SetAudio...
On peut vérifier si le Presse-papier contient une image(ContainsImage), du texte( ContainsText), du son (ContainsAudio).. et récupérer cette image (GetImage ) ou ce texte (GetText).
If My. Computer . Clipboard . ContainsImage Then
PictureBox1. Image = My. Computer . Clipboard . GetImage
ElseIf My. Computer . Clipboard . ContainsText Then
TextBox1. Text = My. Computer . Clipboard . GetText
End If
< paragraph>
< / paragraph>
|
X-M-3. TextBox et couper-coller
A partir de VB 2005(le Framework 2) pour copier coller dans un TextBox , c'est encore plus facile:
La propriété ShortCutsEnabled = True permet à l'utilisateur d'ouvrir un menu contextuel avec le click droit; ce menu permet les annuler, couper, copier, coller, supprimer, Sélectionner tout; ce qui peut aussi être fait avec les raccourcis clavier Shift/Inser Ctrl/Inser..
X-N. Paramètres de configuration (App.ini, registre, App.config)
En plus des données, une application a besoin d'utiliser des paramètres:
Ceux de l'application:
-Nom des bases de données à ouvrir.
-Chemin des bases de données.
-Chaînes de connexion
-Ceux de chaque utilisateur:
- Etat, position et dimension des formulaires.
- Couleurs.
-Paramètres d'imprimante: dimension du papier, police de caractères.
-Préférences de l'utilisateur.
..
Toutes ces informations doivent bien être stockées quelque part!!!
On peut les stocker dans:
-De simples fichiers.
-Des fichiers .INI
-Le registre.
-Des fichiers de configuration .Config (VB 2003)
-Des fichiers de configuration .Config (VB 2005)
En VB2005 on peut même lier une propriété à un paramètre de configuration.
X-N-1. Les Fichiers
Il y a longtemps on utilisait un fichier séquentiel.
On ouvrait le fichier avec FileOpen(), on écrivait les paramètres avec Writeline.
Lors d'une utilisation ultérieure du logiciel on lisait les paramètres avec LineInput.
On utilisait aussi parfois une table dans une base de données pour stocker les paramètres.
Avec Vb.Net certains stockent les paramètres dans un fichier XML (directement ou à l'aide de la serialization)
Mais VB offre d'autres méthodes dédiées à cet usage.
X-N-2. Fichiers .INI
Il y a quelques temps (jusqu'à Windows 95 et même après), on utilisait les fichiers .INI.
Chaque application avait son fichier INI, Windows avait aussi ses propres fichiers INI: System.Ini Boot.Ini..
Exemple d'un fichier MonApp.INI , il est situé dans le répertoire de l'application ou dans le répertoire Windows.
Si on le regarde avec NotePad:
[Configuration Matérielle]
RépertoireDonnées=C:\M\Donnees
RépertoireSauvegardes=C:\M\Sauve
RépertoireLocal=C:\M\Local
[Configuration Logiciel]
SoftAgenda=Calendar.Exe
TypeAgenda=0
PathAgenda=
|
Dans notre exemple, le fichier donne les répertoires de données et le nom de l'agenda à utiliser.
Il comporte de grandes rubriques,[Configuration Matérielle] entourées de [].
Dans chaque rubrique, il y a des clés, RépertoireDonnées par exemple, suivis d'un = puis de la valeur correspondant à la clé C:\M\Donnees ici.
Comment lire ou écrire dans un fichier Ini 'Privé' (propre à l'application).
Il faut pour cela utiliser des fonctions fournis par les API Windows (elles se trouvent dans Kernel32.dll).
GetPrivateProfileString permet de lire une string correspondant à une clé.
GetPrivateProfileInt permet de lire un entier correspondant à une clé.
PutPrivateProfileString permet d'ecrire une string correspondant à une clé.
PutPrivateProfileInt permet d'écrire un entier correspondant à une clé.
A- Avant, il faut les déclarer.
Declare Function GetPrivateProfileInt Lib " Kernel32 " Alias " GetPrivateProfileIntA " _
(ByVal lpApplicationName As String , ByVal lpKeyName As String , _
ByVal nDefault As Long, ByVal lpFileName As String ) As Long
Declare Function GetPrivateProfileString Lib " Kernel32 " Alias " GetPrivateProfileStringA " _
(ByVal lpApplicationName As String , _
ByVal lpKeyName As String , ByVal lpDefault As String , ByVal lpReturnedString As String , ByVal nSize As Short, _
ByVal lpFileName As String ) As Integer
Declare Function WritePrivateProfileString Lib " Kernel32 " Alias " WritePrivateProfileStringA " _
(ByVal lpApplicationName As String , _
ByVal lpKeyName As String , ByVal lpString As String , ByVal lplFileName As String ) As Long
|
B- Pour utiliser plus simplement ces appels à la dll , écrivons des fonctions qui gèrent les appels.
Function Get_Private_Profile_Int (ByVal cAppName As String , ByVal cKeyName As String , _
ByVal nKeyDefault As Integer, ByVal cProfName As String ) As Long
Get_Private_Profile_Int = GetPrivateProfileInt (cAppName, cKeyName, nKeyDefault, cProfName)
End Function
Function Get_Private_Profile_String (ByVal cAppName As String , _
ByVal cKeyName As String , ByVal cKeyDefault As String , ByRef cKeyValue As String , _
ByVal cProfName As String ) As Integer
Dim iReaded As Integer
Const sLongueur As Short = 255
If cKeyName = " " Then
cKeyValue = Space $(1025)
iReaded = GetPrivateProfileString (cAppName, " " , " " , cKeyValue, 1024, cProfName)
Else
cKeyValue = Space $(255)
iReaded = GetPrivateProfileString (cAppName, cKeyName, cKeyDefault, cKeyValue, sLongueur, cProfName)
End If
cKeyValue = Trim $(cKeyValue)
Get_Private_Profile_String = iReaded
End Function
Function Put_Private_Profile_String (ByVal cAppName As String , ByVal cKeyName As String , _
ByVal cKeyValue As String , ByVal cProfName As String ) As Boolean
Dim Status As Long
Status = WritePrivateProfileString (cAppName, cKeyName, cKeyValue, cProfName)
If (Status < > 0) Then
Put_Private_Profile_String = True
Else
Put_Private_Profile_String = False
End If
End Function
End Class
|
C- Exemple de lecture et d'écriture:
- Lecture du répertoire de données dans MonApp. Ini :
Dim cRubrique As String = " Configuration Matérielle "
Dim cKey As String = " RépertoireDonnées "
Dim cRepertoire As String = Space (255)
Dim cIniFile As String = " c:\MonApp\MonApp.ini "
Dim istat As Integer
istat = Get_Private_Profile_String (cRubrique, cKey, " " , cRepertoire, cIniFile)
TextBox1. Text = Trim (cRepertoire)
|
- Ecriture :Dans MonApp.Ini, dans la rubrique "Configuration Matérielle", derrière la clé "cRepOld", écrire "No":
Dim cRubrique As String = " Configuration Matérielle "
Dim cIniFile As String = " c:\MonApp\MonApp.ini "
Dim bOk As Boolean
bOk = Put_Private_Profile_String (cRubrique, " cRepOld " , " No " , cIniFile)
|
Il a bien été ajouté dans le fichier .Ini : cRepOld=No
X-N-3. Registre
A partir de Windows95 et WIndows NT
Attention : l'application doit posséder des droits d'accès au registre suffisants.
Ecriture dans le registre:
Exemple: ajouter la clé "Nom" et la valeur "Philippe" au Registre de l'utilisateur en cours.
Cela sous la clé "Noms" dans HKEY_CURRENT_USER du Registre.
Dim key As Microsoft. Win32 . RegistryKey
key = Microsoft. Win32 . Registry . CurrentUser . CreateSubKey (" Noms " )
key. SetValue (" Nom " , " Philippe " )
|
Pour voir dans le registre le résultat:
Menu 'Démarrer'-> menu 'Exécuter' taper 'Regedit'
Lecture de valeur.
Dim key As Microsoft. Win32 . RegistryKey
key = Microsoft. Win32 . Registry . CurrentUser . OpenSubKey (" Noms " )
Dim name As String = CType (key. GetValue (" Nom " ), String )
|
La méthode GetValue retourne un Object. Si votre code comporte Option Strict On, vous devez effectuer un cast de la valeur de retour vers le type de données que vous avez placé précédemment dans la valeur.
GetValue retourne Nothing si la valeur n'existe pas.
Voir le chapitre sur le registre pour les détails.
X-N-4. Fichier de configuration App.Config File de VB2003 (Framework 1)
VB enregistre les paramètres dans un fichier au format XML.
Créer le fichier de configuration:
Projet->Ajouter un nouvel élément-> cliquer sur 'Fichier de configuration':'App.config' le fichier de configuration en XML est ajouté au projet;(cela ne parrait pas possible en VB 2005 Express)
On le voit dans une fenêtre:
< ?xml version= " 1.0 " encoding= " utf-8 " ?>
< configuration>
< / configuration>
|
Il faut ajouter la partie 'AppSettings' qui contient la configuration, cela donne:
< ?xml version= " 1.0 " encoding= " utf-8 " ?>
< configuration>
< appSettings>
< add key= " TaillePage " value= " 5 " / >
< / appSettings>
< / configuration>
|
On remarque que l'on a ajouté les balises <appSettings> et </appSettings>.
Entre ces balises, on peut ajouter des lignes contenant une clé et sa valeur:
< add key= " TaillePage " value= " 5 " / >
|
On peut modifier les couples 'clé-valeur' dans l'ide ou bien en ouvrant le fichier App.config avec NotePad.
Pour lire un élément de la configuration:
Dim TaillePage As String = Configuration. ConfigurationSettings . AppSettings (" TaillePage " )
|
(on récupère une string :"5" dans l'exemple)
Pour lire tous les éléments:
Dim mAppSet As Specialized. NameValueCollection
mAppSet = Configuration. ConfigurationSettings . AppSettings
If Not mAppSet Is Nothing Then
Me. maliste . Items . Clear ()
Dim keys () As String
keys = mAppSet. AllKeys
Dim key As String
For Each key In keys
Me. maliste . Items . Add (key & " : " & mAppSet. Item (key))
Next
End If
|
On utilise une collection mAppSet de type 'NameValueCollection', on y met AppSettings.
On peut voir le nom des clés grâce à mAppSet.GetKey et les valeurs grâce à mAppSet.Item()
Le problème est que pour modifier une valeur par code, il faut charger le fichier XML, modifier puis enregistrer le fichier XML. C'est complexe!! Il existe des classes qui font cela automatiquement.
X-N-5. Configuration par paramètres Settings de VB2005 (Framework 2)
Dans le Framework 2 Configuration.ConfigurationSettings n'existe plus!!
il faut utiliser Configuration.ConfigurationManager mais il y a beaucoup plus simple avec la classe My .
Les valeurs des paramètres sont enregistrées automatiquement si dans les propriétés du projet, dans l'infrastructure de l'application, "Enregistrer My.setting lors de l'arrêt" est coché.
Les paramètres de configuration concernent l'application ou l'utilisateur.
Les paramètres d'application sont en lecture seule. Dans la mesure où ces paramètres sont des informations du programme, vous n'avez en principe pas besoin de les modifier. Ce sont par exemple le chemin d'une base de données ou un URL.
En revanche, les paramètres d'utilisateur peuvent être lus et modifiés. Ce sont les positions de formulaires, couleur..
On peut créer les paramètres dans le 'Projet designer':
En vb 2005, pas besoin d'ajouter le fichier comme en vb 2003, le fichier de configuration est crée et ajouté au projet dès que l'on crée un paramètre.
Les paramètres de configuration sont donc directement accessibles dans les propriétés du projet (dans l'explorateur de solution double cliquer sur My Projet ou passer par le menu Projet-> Propriétés de..:
Exemple:
Onglet 'Paramètres' , créons un paramètre nommé 'Para1' et contenant '1' (c'est une string)
Un paramètre à un nom, un type, une portée (Application ou Utilisateur), une valeur.
Pour créer, se mettre dans la colonne 'Nom' dans la ligne '*' et taper le nom du paramètre, choisir le type en déroulant la liste avec le bouton de la colonne type, choisir la portée puis éventuellement une valeur.
Donc pas besoin de passer par NotePad et de manipuler de l'XML.
Les fichiers de configuration sont automatiquement crées lors du démarrage de l'application (avec les valeurs par défaut indiquées dans l'onglet 'paramètres').
Pour utiliser un paramètre dans le programme:
on fera:
MonParamètre= My. Parametre . Para1
|
Les Paramètres sont en Read-Only si la portée est 'Application', et en Read-Write (donc modifiable par code) si la portée est 'Utilisateur'.
Ces 'variables paramètres utilisateur' ont des valeurs qui seront conservées et enregistrées automatiquement dans l' 'environnement' d'un utilisateur (en WindowsForms). Si on en modifie la valeur, on retrouve la valeur modifiée lors d'une utilisation ultérieure ce qui permet de conserver les habitudes des utilisateurs.
Modifions un paramètre utilisateur:
My. Parametre . Para1 = " 666 "
|
La nouvelle valeur sera automatiquement enregistrée dans le fichier de config.
Bien sur le paramètre 'NomConnexuinS' qui est un paramètre application n'est pas modifiable.
En VB2005 vous pouvez créer des paramètres de type Color, Font, Point, Size:
My. Settings . MyFont = New Font (Me. Font , FontStyle. Italics )
|
Profil utilisateur:
On peut créer des 'Profils' avec plusieurs noms de profil qui auront chacun des paramètres ayant leur propre valeur pour chaque utilisateur Windows.
On peut par exemple créer un profil "Philippe" et, dans ce profil, donner à Para1 la valeur '333'. Créer un second profil "Odile" et, dans ce profil, donner à Para1 la valeur '222'. Dans ce cas si l'utilisateur Philippe ouvre une session Windows sous le nom l'utilisateur 'Philippe' et qu'il lance l'application, c'est la valeur '333' qui se trouvera dans My.Parametre.Para1
Evènement survenant lors du changement de valeur des paramètres.
En haut à droite, il y a un bouton ou un menu déroulant qui donne accès à 'Afficher le code'.
Cela donne accès à une Classe partielle Setting qui donne accès aux routines PropertySettings, ChangingSettings, SavingSettings; ainsi quand un paramètre change par exemple, on peut mettre ici le code nécessaire à la mise à jour.
Dans quels fichiers et ou est enregistré le 'setting'? :
Dans des fichiers XML.
En mode design:
Les paramètres d'application et utilisateurs (ceux de départ qui ont été écrits à la main dans les propriétés) sont stockés dans la section MonApplication.My.Settings de:
app.Config qui est dans le source, dans "c:\Documents and setting\NomUtilisateur\Mes Document\Visual Studio 2005\MonApplication\MonApplication"
MonApplication.exe.config dans les répertoires bin et release quand on génère l'application. (c'est ce fichier qui sera déployé)
En cours d'exécution:
Les paramètres d'application sont dans:
MonApplication.exe.config dans le répertoire de l'exécutable. (c'est ce fichier qui sera déployé), on rappelle que ces paramètres ne sont pas modifiables.
Les paramètres utilisateurs sont dans
user.config dans le répertoire C:\Documents and Settings\NomUtilisateur\Local Settings\Application Data\NomSociete\MonApplication.exe_Url_43f52d0fihtu0kzyyxxngiyacs5ljtnb\1.0.0.0 . On remarque que VB crée un répertoire dans C:\Documents and Settings\NomUtilisateur\Local Settings\Application Data . Vb utilise ensuite le nom de la société qui distribue le logiciel (le nom qui est dans l'assembly) puis le nom de l'application et enfin la version du programme. Comme le framework s'occupe de tout, à priori, on n'a pas à s'occuper des chemin.
Contenu du fichier WindowsApplication1.exe.config :
Situé dans "c:\Documents and setting\NomUtilisateur\Mes Document\Visual Studio 2005\WindowsApplication1\WindowsApplication1" (et dans bin\release après génération)
L'application se nomme "WindowsApplication1" , on regarde ou est enregistré 'Para1':
< ?xml version= " 1.0 " encoding= " utf-8 " ?>
< configuration>
< configSections>
< userSettings>
< WindowsApplication1. My . MySettings >
< setting name= " parmetre1 " serializeAs= " String " >
< value> 12< / value>
< / setting>
< / Bonjour. My . MySettings >
< / userSettings>
< / configuration>
|
On peut le voir plus rapidement en cliquant dans l'explorateur de solution sur App.Config
X-N-6. Liaison propriétés-Settings de VB2005 (PropertyBinding)
Depuis VB2005, on peut 'lier' la propriété d'un contrôle avec un paramètre. C'est à dire enregistrer automatiquement les valeurs d'une propriété dans les paramètres de configuration.
Prenons un exemple:
J'ai crée une Form1, je veux que l'utilisateur, lorsqu'il lance l'application, retrouve Form1 à la position où il l'avait laissée.
Il faut donc enregistrer la valeur de la propriété Location de Form1 dans le Setting, la configuration, pour cela on va faire du PropertyBinding: On va lier cette propriété à un paramètre du setting.
Dans la fenêtre de propriété de Form1, aller en haut de la liste, cliquer sur le '+'de (ApplicationSettings), puis au niveau de la ligne (PropertyBinding), cliquer sur le bouton à droite. Cela ouvre la fenêtre 'Paramètres d'application de Form1'
Cliquer sur la ligne "location", puis sur le bouton à droite.
Dans la liste qui s'ouvre, cliquer sur 'Nouveau": La fenêtre 'Nouveau paramètre d'application' s'ouvre:
Taper un nom pour le nouveau paramètre (mylocation par exemple), une valeur par défaut si necessaire.
Puis Ok, Ok
C'est fait: le paramètre 'mylocation' est lié à la propriété Location de Form1.
Regardons dans les paramètres de l'application (menu Projet=>Propriétés de..)
On voit bien le nouveau paramètre mylocation de type System.Drawing.Point. Il est lié à Form1.Location (Dans la fenêtre de propriété de form1, sur la ligne location, il y a une toute petite icône qui le signale).
La valeur de Form1.Location sera enregistrée automatiquement et restituée lorsque l'on lancera ultérieurement le programme.
En fait VB génère du code prenant en charge ce BindingProperty: dans l'explorateur de solution cliquer sur MyProjet->Setting.Setting->Setting.Designer.vb on voit le code généré.
X-O. Utiliser les 'Ressources'
Ressources: Document informatique de toute nature (texte, image, son, programme).
Une ressource est une donnée non exécutable qui est déployée logiquement avec une application.
Les ressources sont un ensemble d'éléments,: images, icônes, textes(chaînes), sons, fichiers ou autres qui sont utilisées par le programme. Elles servent habituellement à enrichir l'interface utilisateur. Ce ne sont pas des données. Elles sont contenues dans un fichier .resx et dans un répertoire de ressource.
X-O-1. Intérêt des ressources ?
Si j'ai une image à utiliser dans un contrôle, pourquoi ne pas la mettre directement dans la propriété de mon contrôle?
Vous créez cette image, si une semaine plus tard vous trouvez une image hyper meilleur, avec les ressources, vous n'avez plus qu'à la placer dans le répertoire Ressources à la place de votre précédente image. Vous recompilez et c'est fait.
Si vous avez une même image qui est utilisée à plusieurs endroits de votre application, avec les ressources, vous n'aurez qu'une seule ressource (donc diminution en taille de l'exe) et une facilité de maintenance: plus besoin d'effectuer la modification partout où l'image est utiliser.
Enfin si vous voulez écrire une version de votre exécutable en français et en Anglais, avec les ressources, il n'est pas nécessaire d' écrire 2 programmes, il suffit de faire 2 fichiers de ressources.
X-O-2. Les types de ressources ?
Les types de ressources sont Chaînes, Images, Icônes, Audio, Fichiers et Autre. Chaînes est l'affichage par défaut.
Chaînes
Affiche des chaînes dans une grille de paramètres avec les colonnes Nom, Valeur et Commentaire . Vous pouvez accéder aux paramètres au moment de l'exécution via My.Resources en tant que String. Pour une description des colonnes dans cette grille, consultez la rubrique "Grille des paramètres" ci-après.
Images
Affiche tous les fichiers image, y compris les formats .bmp, .jpg .png et .gif. Ces fichiers sont exposés au moment de l'exécution en tant que Bitmap.
Icônes
Affiche les fichiers icône (* .ico) qui sont exposés en tant que Icon.
Audio
Affiche les fichiers audio, y compris les fichiers .wav, .wma et .mp3. Ces fichiers sont exposés en tant que tableaux d'octets. Le double-clic sur un élément audio permet de l'ouvrir et de le jouer dans Lecteur Windows Media.
Fichiers
Affiche tous les fichiers qui n'entrent pas dans les catégories précitées. Les éléments dans cet affichage peuvent être des fichiers texte exposés en tant que String ou des fichiers binaires exposés en tant que tableaux d'octets.
Autres
Affiche une grille de paramètres pour ajouter d'autres types qui prennent en charge la sérialisation de chaînes (par exemple, Font, Enum, Color et Point). La grille contient les colonnes suivantes : Nom, Type, Valeur et Commentaire.
X-O-3. Voir les ressources
Pour voir les ressources, il faut aller dans les propriétés du projet: double cliquez sur MyProjet dans l'explorateur de solution ou menu 'Projet'=>'Propriétés de..', Onglet 'Ressources')
On voit immédiatement les Chaînes; il est possible de voir les autres types de ressources en déroulant la liste à gauche.
Ici on voit une ressource 'chaîne' qui se nomme 'toto' (c'est nul!!) et qui contient "2".
X-O-4. Ajouter des ressources
1-Mettre du texte dans une ressource:
Si nécessaire dérouler la liste à gauche et cliquez sur 'Chaînes'.
2 manières d'ajouter une chaîne:
Cliquez sur le bouton 'Ajouter une ressource' puis sur 'Ajouter une nouvelle chaîne'. le curseur se retrouve dans la zone de saisie du nouveau nom: tapez le nom puis la valeur.
Ou cliquez directement dans la zone du nom sur la ligne '*', tapez le nom puis la valeur.
L'enregistrement est automatique.
2-Mettre le dessin dans les ressources:
Aller dans les ressources
Dérouler la liste à gauche pour y mettre 'Images' puis cliquer sur 'ajouter une ressource'; on vous demande le nom de la ressource (tapez par exemple 'button_blue'), vous vous trouvez dans Paint, dessinez (ou collez) l'image de votre bouton. Puis menu 'Fichier'=>'Enregistrer': le dessin apparaît dans les ressources. Fermez Paint.
X-O-5. Où se trouvent les ressources
Dans l'explorateur de solutions, on voit bien le répertoire de ressources et la ressource qui vient d'être créee (le fichier Image1.bmp par exemple)
On peut d'ailleurs aller dans ce répertoire et modifier la ressource, remplacer le fichier par un autre, la modification est immédiatement mise à jour dans VB.
Vous créez une image, si une semaine plus tard vous trouvez une image hyper plus belle, vous n'avez plus qu'à la placer dans le répertoire Ressources à la place de votre précédente image.
X-O-6. Modifier une ressource
Une image par exemple :
Cliquez sur la ressource, puis cliquez avec le bouton droit; dans le menu:
Ouvrir: ouvre l'éditeur par défaut (Paint pour une image)
Ouvrir avec : permet de modifier la ressource avec un autre programme.
X-O-7. Utiliser une ressource dans le programme
Les ressources sont accessibles par leur nom dans la Classe My.Ressources.
Mettre le texte d'une ressource dans la barre de titre d'un formulaire:
Me. Text = My. Resources . Form1Title
|
Mettre une ressource image dans le plan BackGround d'un formulaire:
Me. BackgroundImage = My. Resources . Form1Background
|
Mettre une ressource image dans le plan BackGround d'un bouton:
MyButton. BackGroundImage = MonProgramme. My . Ressources . Ressources . button_Blue
|
Mettre une ressource icône comme icône d'un formulaire:
Me. Icon = My. Resources . MyIcon
|
Jouer un son qui est dans les ressources.
My. Computer . Audio . Play (My. Resources . Form1Greeting , AudioPlayMode. Background )
|
X-O-8. Ressources localisées
On a parfois besoin d'avoir des ressources pour différentes langues. (Texte des boutons en Français ou en Anglais par exemple).
Pour chaque culture faire un fichier .resx
En fait, copier le fichier de ressources et attribuer au fichier de ressources le nouveau nom Resources.CultureSignature.resx
Il semble que les fichiers de ressources de la langue par défaut soit dans le répertoire ressources avec l'extension .resx et que pour chaque autre culture, un sous-répertoire soit nécessaire (sous-répertoire nommé 'fr', 'en-us'..) Enfin dans ce sous répertoire, le fichier se nomme monprogramme.Fr-fr.resx A vérifier!!
Quand la culture de l'ordinateur change, le fichier de ressources correspondant est utilisé.
Exemple: ici on modifie la culture puis on utilise la ressource correspondante.
Dim Currentculture As String = My. Application . UICulture . Name
My. Application . ChangeUICulture (" fr-FR " )
MsgBox (My. Resources . MyMessage )
My. Application . ChangeUICulture (Currentculture)
|
X-O-9. Ressources liées ou incorporées
Les projets Visual Studio fournissent deux options différentes pour gérer les ressources : celles-ci peuvent être liées (par défaut) ou incorporées. S'il est possible d'avoir à la fois des ressources liées et incorporées dans un même projet, il est plus pratique dans la plupart des cas de choisir une option pour toutes les ressources du projet.
Les ressources liées sont stockées comme des fichiers dans le projet. Pendant la compilation, les données de ressources sont extraites des fichiers et placées dans le manifeste de l'application. Le fichier de ressources (.resx) de l'application stocke uniquement un chemin d'accès relatif ou un lien au fichier sur le disque.
Avec les ressources incorporées, les données de ressources sont stockées directement dans le fichier .resx dans une représentation textuelle des données binaires.
Dans l'un et l'autre cas, les données de ressources sont compilées dans le fichier exécutable.
Les ressources peuvent passer de la valeur "liées " à "incorporées " en modifiant la propriété Persistence du fichier de ressources.
Dans la fenêtre Propriétés, sélectionnez la propriété Persistance et affectez-lui la valeur Incorporé dans .resx.
Dans la fenêtre Propriétés, sélectionnez la propriété Persistance et affectez-lui la valeur Lié au moment de la compilation.
Les ressources incorporées sont le meilleur choix si vous devez partager des fichiers de ressources d'application (.resx) entre plusieurs projets. Par exemple, si vous disposez d'un fichier de ressources communes contenant des informations telles que les logos et les informations relatives aux marques de votre société, l'utilisation de ressources incorporées signifie que vous pouvez vous contenter de copier le fichier .resx et non les fichiers de données de ressources associés.
Vous ne pouvez pas modifier directement les ressources incorporées. Si vous tentez de modifier une ressource incorporée, un message vous invitant à convertir l'élément en ressource liée afin de la modifier s'affichera ; la conversion est recommandée mais facultative. Vous devez les exporter, effectuer vos modifications dans un programme externe, puis les réimporter dans votre projet.
Les ressources de type chaîne sont toujours incorporées et ne peuvent pas être modifiées. Les ressources de fichier sont toujours liées et ne peuvent pas être modifiées.
X-O-10. Comment cela marche ?
Quand on ajoute par exemple une image aux ressources, VB crée (si ce n'est déjà fait), un répertoire Ressources dans votre projet. Puis il copie votre fichier image dans ce répertoire. Ensuite, il crée (ou modifie) un fichier .resX avec une référence vers le fichier image correspondant et une classe interne Ressources. Cette dernière possède des propriétés en lecture seules statiques qui retourne les ressources de votre fichier ressource :
A la compilation, ces images seront incluses dans votre exécutable.
Vous créez cette image, si une semaine plus tard vous trouvez une image hyper meilleur, vous n'avez plus qu'à la placer dans le répertoire Ressources à la place de votre précédente image. Vous recompilez et c'est fait.
X-P. Où mettre les programmes et les données
X-P-1. Il faut séparer les données des programmes !!!
Les programmes, les données n'ont pas la même vocation.
Les fichiers programmes ( les fichiers .exe)sont copiés sur votre disque au moment de l'installation du logiciel ou au moment de sa mise à jour. En dehors de ces périodes, ces fichiers ne changent pas.
Il n'est donc pas utile de sauvegarder fréquemment, car en plus, vous possédez ceux-ci par ailleurs sur un support d'installation (CD-ROM, fichier téléchargé).
Par contre les fichiers de données sont régulièrement créés, enregistrés ou modifiés: mails, documents Word ou Excel, photos, fichiers musicaux, bases de données. Pour ne pas perdre toutes ces informations, il faut les sauvegarder: les enregistrer régulièrement sur un autre support (CD-ROM, disque dur externe, clé USB, autre ordinateur d'un réseau..)
Pour favoriser vos sauvegardes, il est donc logique de séparer vos données de vos programmes, et de les mettre dans des répertoires différents.
Habituellement on a un répertoire de programmes et un répertoire de données, il est possible d'avoir un répertoire de données pour chaque utilisateur si les données sont distinctes et parfois un répertoire commun à tous les utilisateurs (AllUsers)
Ainsi on peut simplement sauvegarder régulièrement la totalité du répertoire de données et uniquement ce répertoire.
De même pour éviter les soucis lors de la réinstallation de Windows, il est plus facile de protéger les données si celles-ci se trouvent sur un disque ou une partition séparée.
X-P-2. Sécurité
Un virus, un ver ou un spyware est un programme qui va essayer d'utiliser votre accès à Windows (vos droits d'utilisateur) pour s' "auto-installer" et prendre la main de votre système.
Or par défaut sous Windows XP vous avez tous les droits (car vous avez un compte administrateur) : mettre à jour le système, installer des programmes, ce qui n'est pas vraiment indispensable pour lire vos mails, faire du traitement de texte ou surfer sur Internet.
Vous pouvez donc utiliser votre Windows de la manière suivante :
- créer des comptes utilisateurs limités pour l'usage quotidien.
- utiliser un compte administrateur pour toutes les installations et mises à jour.
C'est une contrainte mais cela garantit le maximum de sécurité.
X-P-3. Quels répertoires utiliser ?
Un répertoire 'Programs Files' contient des sous répertoires pour chaque programme contenant les exécutables.
Un répertoire 'Mes documents' contenant des sous répertoires pour chaque programme contenant les fichiers de données.
Les paramètres de l'application sont dans un fichier .ini qui se trouve dans le répertoire Windows ou le répertoire de l'application ou la base de registre.
Un répertoire 'Programs Files' contient des sous répertoires pour chaque programme contenant les exécutables.
Un répertoire 'Documents ans Settings' contient des sous répertoires pour chaque utilisateur (ici le mien se nomme 'Phil') et un répertoire commun à tous les utilisateurs: AllUsers.
Dans chaque répertoire utilisateur il y a:
- un répertoire 'Application Data' pour chaque programme contenant les fichiers de données.
C:\Documents and Settings\phil\Application Data\OpenOffice.org2\user\database
- un répertoire 'Mes documents'
C:\Documents and Settings\phil\Mes documents\Visual Studio 2005\Projects\chiffreromain
Mais aussi un répertoire 'Local Settings' pour les fichiers de configuration et les exécutables.
C:\Documents and Settings\phil\Local Settings\Application Data\Pentax\Digital Camera Utility
Version anglaise:
Dans le Desktop,(information trouvée sur le Net)
Il y a:
Un répertoire 'Programs Files'
Un répertoire 'Users' qui contient des répertoires au nom de chaque utilisateur ('pch' ici par exemple)
Dans chaque répertoire utilisateur il y a un répertoire AppData pour les données (qui remplace Application Data). Dessous , il y a un répertoire Local et encore dessous un répertoire au nom de la société qui a fait le logiciel (ici Microsoft) puis un répertoire pour le programme et pour la version.
Ainsi les données du programme LDF version 1.1.0 crées par PolySoft seront dans le répertoire:
C:\Users\MyName\AppData\Local\PolySoft\LDF\1.1.0\
Version française il y a:
Un répertoire 'Ordinateur'(au lieu de computer).
Un sous répertoire 'Disque local(C:)
Un sous répertoire 'Programmes'(au lieu de'Program Files')
Un sous répertoire MonProgramme ou se trouvent le programme exe.
Ainsi l'exécutable du programme LDF est dans le répertoire:
C:\Programmes\LDF
Il 'faudrait' utiliser ces répertoires pour les exécutables et les données!!!
Quand, par exemple, on installe un logiciel avec Click Once de VB2005 sur un ordinateur Windows XP, l'exécutable s'installe dans C:\Documents and Settings\Nom Utilisateur\Local Settings\Apps:
C:\Documents and Settings\phil\Local Settings\Apps\2.0\WD2P2BPB.7A5\OVEEZQLA.BC1\chif..tion_6625898959f0f00b_0001.0000_56fb0b87e9540260
Le fichier de configuration user.config et les données dans C:\Documents and Settings\Nom Utilisateur\Application Data
C:\Documents and Settings\phil\Application Data\Polytel\WindowsApplication1.vshos_Url_dhzke3q02e3bxuhunbsnp0jhjwtnzb1i\1.0.0.0
(On remarque que après '..Application Data' le chemin comporte \CompanyName\ProductName\ProductVersion)
Il ne 'faudrait' pas utiliser le répertoire 'Program Files\Mon Application' pour les données!!
En fait, beaucoup de programmes écrivent des données directement dans le répertoire courant de l'application (dans C;\Program Files\MonApplication); comment cela se passe?
- Aucun problème avec Windows 98.
- Avec Windows XP puisque les comptes limités (comptes utilisateurs standards) n'ont pas accès en écriture au dossier %Program Files% et n'ont pas accès à HKEY-Local_Machine du registre; le problème à été résolu simplement: De manière générale les utilisateurs ont un compte administrateur, donc, ils ont tous les droits et peuvent écrire leurs données dans Program Files et modifier le registre!!
- Vista "contourne ce problème": si on installe un programme qui veut utiliser le répertoire 'Program Files', Vista utilise un répertoire VirtualStore dans lequel il place un faux répertoire 'Program Files', en effet tous les programmes qui tentent d'écrire vers %Program Files% ou %windir% seront automatiquement redirigés vers 'C:\Users\Nom Utilisateur\AppData\Local\VirtualStore\Program Files'. Si le programme tente ensuite de lire le fichier précédemment écrit, le programme lira automatiquement le bon fichier. Tout ceci est invisible pour le programme, c'est Vista qui gère tout( le répertoire AppData\Local\VirtualStore serait caché). On appelle cela la 'virtualisation'. Attention donc, si le programme veut écrire dans C:\Program Files\MonProg\utilisateur , en fait, il écrira dans C:\Users\nom d'utilisateur\AppData\Local\VirtualStore\Program Files\MonProg\utilisateur. .
X-P-4. Obtenir le répertoire de l'exécutable et des données
Rien de plus simple (dans un programme VB 2005 sous Windows XP), pour un utilisateur:
Application.StartupPath donne le répertoire de l'exécutable.
Exemple: dans l'environnement de développement VB 2005, pour le programme WindowsApplication2:
C:\Documents and Settings\phil\Mes documents\Visual Studio 2005\Projects\WindowsApplication2\WindowsApplication2\bin\Debug
Application.UserAppDataPath donne le répertoire de données.
C:\Documents and Settings\phil\Application Data\WindowsApplication1\WindowsApplication1\1.0.0.0
De même on peut obtenir la clé de Registre des données d'application.
Application.UserAppDatRegistry
Pour les données et le registre commun à tous les utilisateurs:
Application. CommonAppDataPath
Application. CommonAppDatRegistry
|
La classe Environment donne des informations concernant l'environnement et la plate-forme en cours ainsi que des moyens pour les manipuler. Par exemple: les arguments de la ligne de commande, le code de sortie, les paramètres des variables d'environnement, le contenu de la pile des appels, le temps écoulé depuis le dernier démarrage du système ou le numéro de version du Common Language Runtime mais aussi certains répertoires .
Environment. CurrentDirectory
Environment. MachineName
Environment. OsVersion
Environment. SystemDirectory
Environment. UserName
|
La fonction GetFolderPath avec un argument faisant partie de l'énumération SpecialFolder retourne le répertoire d'un tas de choses:
Exemple: Quel est le répertoire Système?
Environment. GetFolderPath (Environment. SpecialFolder . System )
|
En vb 2010 on trouve les répertoires:
Cookies
CDBurning
Desktop
Favories
History
Programs
MyMusic
MyPicture
Recent
SendTo
System
Templates
Personal (Mydocuments)
ProgramFiles
UserProfile
CommonDocuments, CommonMusic, CommonPictures, CommonVideos
MyVideos
Ressources
Windows.
X-P-5. Droits d'accès utilisateur dans Vista et Windows 7 : l'UAC
Pour réduire les effets des logiciels malveillants, Windows Vista inclut un nouveau modèle de sécurité dénommé User Account Control (UAC) qui marque un tournant comparé au modèle traditionnel des privilèges accordés aux utilisateurs de Windows, et affecte presque tous les utilisateurs Windows. L'UAC vise à améliorer l'expérience des utilisateurs standards de Windows, tout en réduisant le risque constitué par les logiciels malveillants.
Dans l'UAC, tous les utilisateurs Windows Vista, dont ceux qui possèdent des droits d'administrateur, interagissent avec leurs PC en tant qu'utilisateurs standards la plupart du temps. Le compte utilisateur standard Windows continue de ne pas avoir de privilèges d'administrateur, ce qui évite à un logiciel malveillant téléchargé malencontreusement par un tel compte de s'installer sur l'ordinateur. Ainsi, le logiciel malveillant qui s'infiltre d'une façon ou d'une autre dans un PC ne peut accéder ni à la base des registres ni aux répertoires protégés.
Si vous essayez d'effectuer une tâche qui nécessite des privilèges d'administrateur, comme l'installation d'un logiciel ou le changement d'état du pare-feu Windows, Windows Vista vous invite explicitement à donner votre autorisation et à vous identifier avant de vous faire passer temporairement au rang d'administrateur pour achever la tâche en cours. Pour un utilisateur standard, cela signifie concrètement la saisie d'un nom d'utilisateur et d'un mot de passe qui appartiennent à un membre du groupe Administrateurs
Dans Windows Vista avec le modèle UAC, les comptes utilisateurs standards ont été modifiés pour offrir des privilèges supplémentaires:
- visualiser les horloges systèmes et les calendriers
- modifier les fuseaux horaires
- changer les paramètres de gestion de la puissance
- ajouter des imprimantes si les bons drivers sont installés sur l'ordinateur
- créer et configurer des connexions VPN
- installer les mises à jour Windows essentielles
Dans les versions précédentes de Windows, un non-administrateur ne pouvait pas facilement comprendre quelles actions lui étaient autorisées. Dorénavant, Windows Vista utilise une icône de protection pour vous aider à comprendre quelles tâches seuls les administrateurs ont le droit d'effectuer
Les sources présentés sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © .
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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
Cette page est déposée à la SACD.
|