|
|
|||||
|
Sous Windows CE il n'y a pas de lettre de lecteur comme sous DOS ou sous les Windows de bureau. Le système de stockage est unifié, même si physiquement il est constitué de plusieurs éléments, comme la Ram système, la Rom (ou flashrom), une carte Compact Flash (CF) ou encore une PC Card (PCMCIA). Lorsque vous ajoutez une carte mémoire (une CF par exemple), le système ajoute un dossier à la racine du système de fichier. Ce dossier représente la racine de cette mémoire de stockage additionnelle. Sur nos Pocket PC français, ce dossier à pour nom "Carte de stockage" pour une CF. Le problème, c'est que ce nom est différent sur un Pocket PC US, où il devient "Storage Card".
Tous les dossiers correspondant à un volume d'extension possède un attribut "Dossier", ce qui est normal, et aussi un attribut "Temporaire" qui indique la nature exacte du dossier. Il faut appuyer les recherches sur cette information.
Pour partir à la recherche d'un dossier correspondant à un volume d'extension, vous devez scanner les dossiers à la racine du système de fichiers. Pour cela, nous allons utiliser les services d'un contrôle eVB, les "FileSystem Controls". Vous trouverez à cette adresse un article complet sur l'utilisation de ce contrôle. Il faut donc partir à la recherche de tous les dossiers qui ont (en plus de l'attribut "Dossier") l'attribut "Temporaire". Mais nous avons un gros problème car le contrôle "FileSystem" ne gère pas du tout l'attribut "Temporaire". Comme toujours, nous allons contourner ce problème en faisant appel aux API
Il existe une API qui permet de lire les attributs d'un fichier ou d'un dossier. Cette API est "GetFileAttributes" et elle se déclare ainsi en eVB : Public Declare Function
GetFileAttributes Lib "coredll" Alias "GetFileAttributesW"
(ByVal wFilename As String) As Long Son utilisation est simple, il suffit de donner en paramètre le fichier dont on doit récupérer les attributs. Par exemple, si vous voulez récupérer les attributs du fichier "\Windows\Alarm1.wav" : Dim wAttr As Long Il nous faut aussi la valeur de la constante correspondant à l'attribut "Temporaire". Cette constante se déclare ainsi en eVB : Const FILE_ATTRIBUTE_TEMPORARY = &h100 et si on veut vérifier que le fichier ou le dossier possède bien l'attribut "Temporaire" il suffit d'effectuer une opération logique "AND" entre la valeur retournée par l'API "GetFileAttributes" et la constante "FILE_ATTRIBUTE_TEMPORARY" : If wAttr And FILE_ATTRIBUTE_TEMPORARY Then
Rem Attribut "Temporaire" actif
End If
Nous allons écrire un peu de code qui va scanner les dossiers à la racine et afficher dans une boite de dialogue celui ou ceux qui sont des volumes d'extension :
Vous pouvez placer ce code dans l'événement click d'un bouton pour le tester. Dim wFileSystem As FILECTL.FileSystem
Dim d As String
Dim i As Integer
Dim wAttrib As Long
Rem Instanciation de l'objet FileSystem
Set wFileSystem = CreateObject("FILECTL.FileSystem")
Rem On ne recherche que les dossiers sous la racine
d = wFileSystem.Dir("\*", fsAttrDirectory)
Do While d <> ""
If GetFileAttributes("\" & d) And FILE_ATTRIBUTE_TEMPORARY Then
Call Msgbox("Le dossier \" & d & " est un volume d'extension")
Voila, l'utilisation des cartes d'extension n'est plus du tout un problème maintenant que vous savez repérer leur dossier racine.
|
|||||
|
|
|||||
|
Copyright 2001-2004 - Tous droits réservés
|
|||||
|
iPAQ
est un produit de COMPAQ.
|