Voilà je viens de me pencher sur une des façon qui me permettrai de trouver les lettres des différant périphériques connecter sur un ordinateur.
J'ai bien trouver une façon mais je souhaiterai savoir si vous vous êtes déjà penchez sur le sujet, ou de quel façon auriez vous fait ?
Pour ma part, voici ma façon de faire :
Je créer un ComboBox avec les 26 lettres de l'alphabet.
A:/
B:/
C:/
etc..
De la, j'essaie de créer un fichier quelconque dans chaque-une des lettres. Si le résultat est positif c'est que le périphérique existe bien.
Je récupère donc cette lettre Ex : E:/ que je sauvegarde dans un fichier pref. Et je contiune ça jusqu'a la lettre Z:/
Ensuite je vide ma ComboBox et j'affiche uniquement le ou les lettres retenue dans mon fichiers pref. Et je supprime tout les fichiers précédemment créer.
Voilà grosso-modo ma façon de faire. Personnellement je trouve ça un peut "fouillons" mais le résultat est la. Qu'en pensez vous ? Peut être que je me suis trop pris la tête (ce qui est fort probable)
En attendant vos retours (votre façon de faire, ou si mon code fonctionne bien chez vous). Voici mon code "test".
Merci.
Code : Tout sélectionner
;- Window Constants
Enumeration
#Window_0
EndEnumeration
;- gadgets Constants
Enumeration
#combo_0
EndEnumeration
Declare LettreDissponible()
If OpenWindow(#Window_0, 0, 0, 350, 100, "Détection des disques amovibles", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
ComboBoxGadget(#Combo_0, 10, 10, 320, 20)
AddGadgetItem(#Combo_0, 0, "A:/", 0)
AddGadgetItem(#Combo_0, 1, "B:/", 0)
AddGadgetItem(#Combo_0, 2, "C:/", 0)
AddGadgetItem(#Combo_0, 3, "D:/", 0)
AddGadgetItem(#Combo_0, 4, "E:/", 0)
AddGadgetItem(#Combo_0, 5, "F:/", 0)
AddGadgetItem(#Combo_0, 6, "G:/", 0)
AddGadgetItem(#Combo_0, 7, "H:/", 0)
AddGadgetItem(#Combo_0, 8, "I:/", 0)
AddGadgetItem(#Combo_0, 9, "J:/", 0)
AddGadgetItem(#Combo_0, 10, "K:/", 0)
AddGadgetItem(#Combo_0, 11, "L:/", 0)
AddGadgetItem(#Combo_0, 12, "M:/", 0)
AddGadgetItem(#Combo_0, 13, "N:/", 0)
AddGadgetItem(#Combo_0, 14, "O:/", 0)
AddGadgetItem(#Combo_0, 15, "P:/", 0)
AddGadgetItem(#Combo_0, 16, "Q:/", 0)
AddGadgetItem(#Combo_0, 17, "R:/", 0)
AddGadgetItem(#Combo_0, 18, "S:/", 0)
AddGadgetItem(#Combo_0, 19, "T:/", 0)
AddGadgetItem(#Combo_0, 20, "U:/", 0)
AddGadgetItem(#Combo_0, 21, "V:/", 0)
AddGadgetItem(#Combo_0, 22, "W:/", 0)
AddGadgetItem(#Combo_0, 23, "X:/", 0)
AddGadgetItem(#Combo_0, 24, "Y:/", 0)
AddGadgetItem(#Combo_0, 25, "Z:/", 0)
LettreDissponible() ; appel la procedure qui trouve les peripheriques
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
Procedure LettreDissponible()
CreatePreferences(GetHomeDirectory()+"CDA", 0) ; creer un fichier pour sauvegarder les peripheriques compatibles
For a = 0 To 25 ; creer une boucle des 26 lettres de l'alphabet
ResultatLettre = CreateFile(a, GetGadgetItemText(#Combo_0, a, 0)+"CDA", 0) ; essaie de crée un fichier dans tout les peripherique de A a Z
If ResultatLettre > 0 ; verifie si le fichier est bien creer
WritePreferenceString(Str(a), GetGadgetItemText(#Combo_0, a, 0)) ; si oui, on enregistre la lettre dans le fichier pref
CloseFile(a) ; on ferme le ou les fichiers creer dans les peripheriques qui a permis a la detection pour une future supression
EndIf
Next
ClearGadgetItems(#Combo_0) ; on vide la ComboBox
ExaminePreferenceKeys() ; commence l'ennumération dans le fichier pref
While NextPreferenceKey() ; clef suivante
AddGadgetItem(#Combo_0, Val(PreferenceKeyValue()), PreferenceKeyValue(), 0, 0) ; on affiche la lettre dissponible dans la ComboBox
DeleteFile(PreferenceKeyValue()+"CDA") ; on supprime le ficher creer dans le peripherique qui a permis a la détection
Wend
ClosePreferences() ; on referme le fichier pref apres scan pour une future suppression
SetGadgetState(#Combo_0, 0) ; on affiche par defaut le 1er elements dans la ComboBox
DeleteFile(GetHomeDirectory()+"CDA")
EndProcedure
@++