Je profite de l'article d'Ar-S DRIVE ICON CHANGER pour donner une solution sans API ni Lib pour lire des clés de la BDR (Base De Registre)
Utilisez l'application d'Ar-S pour changer les icônes des disques internes ou partitions de votre PC et testez le code suivant:
Code : Tout sélectionner
EnableExplicit
Global erreur$
Procedure.s regQuery(quoi$)
Protected flags, texte$
Protected dc$ = Chr(34)
Protected Key$ = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\"
ClearClipboard()
erreur$ = #Null$
flags = #PB_Program_Wait|#PB_Program_Hide
RunProgram("cmd.exe", "/c reg.exe query "+dc$+Key$+quoi$+dc$+" 2>&1|clip", "", Flags)
texte$ = GetClipboardText() ;: Debug texte$
ClearClipboard()
If FindString(texte$,"Erreur",1,#PB_String_NoCase)
erreur$ = ReplaceString(texte$, #CRLF$, #Null$)
EndIf
ProcedureReturn texte$
EndProcedure
Procedure getDriveIcons()
Protected count, enum, index
Protected line$, result$, Disque$, Lettre$
Structure DriveIcons
Drive.s
Icon.s
EndStructure
NewMap Drive.DriveIcons()
For enum = 0 To 25 ; 26 letters A->Z code 65 to 90
Lettre$ = Chr(65 + enum)
Disque$ = Lettre$ +":\"
If FileSize(Disque$) = -2
Drive(Lettre$)\Drive = Disque$ ; ou Lettre$ au choix
result$ = regQuery(Lettre$)
count = CountString(result$, #CRLF$)
If count
For index = 1 To count
line$ = StringField(result$, index, #CRLF$)
If FindString(line$,"DefaultIcon",1,#PB_String_NoCase)
result$ = regQuery(Lettre$+"\DefaultIcon")
Drive()\Icon = Trim(StringField(result$,2,"REG_SZ"))
EndIf
Next
If Drive()\Icon = #Null$
If erreur$ = #Null$
Drive()\Icon = "Aucune icône définie"
Else
Drive()\Icon = erreur$
EndIf
EndIf
EndIf
EndIf
Next
ForEach Drive()
Debug "Disque: "+ Drive()\Drive
Debug ">Icône: " + Drive()\Icon
Debug #Null$
Next
EndProcedure
getDriveIcons()
Cela peut intéresser ceux qui n'ont qu'une version démo de PB
reg.exe est un utilitaire disponible sur toutes les versions Windows de XP a 10
L'aide s'obtient par reg /? dans une Invite de commandes
Code : Tout sélectionner
C:\>reg.exe /?
REG Opération [Liste de paramètres]
Opération [ QUERY | ADD | DELETE | COPY |
SAVE | LOAD | UNLOAD | RESTORE |
COMPARE | EXPORT | IMPORT | FLAGS ]
Code de retour : (sauf pour REG COMPARE)
0 : réussite
1 : échec
Pour obtenir de l’aide sur un type d’opération particulier :
REG Opération /?
Exemples :
REG QUERY /?
REG ADD /?
REG DELETE /?
REG COPY /?
REG SAVE /?
REG RESTORE /?
REG LOAD /?
REG UNLOAD /?
REG COMPARE /?
REG EXPORT /?
REG IMPORT /?
REG FLAGS /?
C:\>
Une autre solution est d'utiliser vbs a partir de PB pour arriver a ses fins.
Une autre fois certainement.
CAGE