Dossier spéciaux de Windows
Publié : mer. 11/févr./2009 20:21
Donc voila, je remets à jour un ancien code du forum pour l'améliorer et essayer de contourner certain problème avec Vista.
sous vista, quelqu'un peut me donner le contenu de la fenêtre de debug
sous vista, quelqu'un peut me donner le contenu de la fenêtre de debug
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 4.3
;
; Explication du programme :
; Récupérer le nom, l'adresse et l'icône des dossiers spéciaux de windows
ProcedureDLL.s GetSpecialFolderLocation2(Valeur.l) ; Récupère l'adresse d'un dossier spécifique de Windows
Protected SpecialFolderLocation.s, Dossier_ID.l
If SHGetSpecialFolderLocation_(0, Valeur, @Dossier_ID) = 0
SpecialFolderLocation = Space(#MAX_PATH)
SHGetPathFromIDList_(Dossier_ID, @SpecialFolderLocation)
If SpecialFolderLocation
If Right(SpecialFolderLocation, 1) <> "\"
SpecialFolderLocation + "\"
EndIf
EndIf
EndIf
ProcedureReturn SpecialFolderLocation
EndProcedure
ProcedureDLL.s GetSpecialFolderName2(Valeur.l) ; Récupère le nom d'un dossier spécifique de Windows
Protected Dossier.SHFILEINFO, Dossier_ID.l
If SHGetSpecialFolderLocation_(0, Valeur, @Dossier_ID) = 0
SHGetFileInfo_(Dossier_ID, 0, @Dossier, SizeOf(SHFILEINFO), #SHGFI_PIDL | #SHGFI_DISPLAYNAME)
EndIf
ProcedureReturn PeekS(@Dossier\szDisplayName )
EndProcedure
ProcedureDLL.l GetSpecialFolderSmallIcon2(Valeur.l) ; Récupère l'icône 16*16 d'un dossier spécifique de Windows
Protected Dossier.SHFILEINFO, Dossier_ID.l, Icone
If SHGetSpecialFolderLocation_(0, Valeur, @Dossier_ID) = 0
SHGetFileInfo_(Dossier_ID, 0, @Dossier, SizeOf(SHFILEINFO), #SHGFI_ICON | #SHGFI_PIDL | #SHGFI_SMALLICON)
EndIf
ProcedureReturn Dossier\hIcon
EndProcedure
ProcedureDLL.l GetSpecialFolderLargeIcon2(Valeur.l) ; Récupère l'icône 32*32 d'un dossier spécifique de Windows
Protected Dossier.SHFILEINFO, Dossier_ID.l, Icone
If SHGetSpecialFolderLocation_(0, Valeur, @Dossier_ID) = 0
SHGetFileInfo_(Dossier_ID, 0, @Dossier, SizeOf(SHFILEINFO), #SHGFI_ICON | #SHGFI_PIDL | #SHGFI_LARGEICON)
EndIf
ProcedureReturn Dossier\hIcon
EndProcedure
;- Programme principal
; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 800, 300, "Dossiers spéciaux", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0 Or CreateGadgetList(WindowID(0)) = 0
End
EndIf
; On crée un liste
ListIconGadget(1, 0, 0, 800, 200, "Valeur", 60, #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_FullRowSelect)
AddGadgetColumn(1, 1, "Nom", 150)
AddGadgetColumn(1, 2, "Adresse du dossier", 560)
; On liste tous les dossier systèmes récupérables
For n = 0 To 200
Nom.s = GetSpecialFolderName2(n) ; On récupère le nom du dossier
Adresse.s = GetSpecialFolderLocation2(n) ; On récupère l'adresse du dossier
If Nom
If Adresse = "" ; Affichage dans le debugger des dossiers
Debug RSet(Str(n), 2, "0") + " Pas de dossier, il s'agit de : " + Nom
Else
Debug RSet(Str(n), 2, "0") + " " + Adresse
EndIf
AddGadgetItem(1, -1, Str(n) + Chr(10) + Nom + Chr(10) + Adresse) ; On affiche
EndIf
Next
; On affiche l'icône du premier élément
SetGadgetState(1, 0) ; on sélectionne le premier élément
TextGadget(4, 5, 215, 200, 15, "Icône du dossier sélectionné :")
ImageGadget(2, 5, 235, 16, 16, GetSpecialFolderSmallIcon2(0)) ; en 16 * 16
ImageGadget(3, 50, 235, 32, 32, GetSpecialFolderLargeIcon2(0)) ; en 32 * 32
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget() ; Gadgets
Case 1
Select EventType()
Case #PB_EventType_Change
Position = GetGadgetState(1)
If Position >= 0
Valeur = Val(GetGadgetItemText(1, Position, 0))
SetGadgetState(2, GetSpecialFolderSmallIcon2(Valeur))
SetGadgetState(3, GetSpecialFolderLargeIcon2(Valeur))
EndIf
Case #PB_EventType_LeftDoubleClick
Position = GetGadgetState(1)
If Position >= 0
Debug GetGadgetItemText(1, Position, 2)
RunProgram("explorer.exe", "/e,/n," + Chr(34) + GetGadgetItemText(1, Position, 2) + Chr(34), "")
EndIf
EndSelect
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
End
; Voici la liste des valeurs obtenues sous Windows XP (Certaines valeurs n'ont pas de dossier sous d'autres version de Windows)
; 00 C:\Documents And Settings\Le Soldat Inconnu\Bureau\
; 01 Pas de dossier, il s'agit de : Internet Explorer
; 02 C:\Documents And Settings\Le Soldat Inconnu\Menu Démarrer\Programmes\
; 03 Pas de dossier, il s'agit de : Panneau de configuration
; 04 Pas de dossier, il s'agit de : Imprimantes et télécopieurs
; 05 C:\Documents And Settings\Le Soldat Inconnu\Mes Documents\
; 06 C:\Documents And Settings\Le Soldat Inconnu\Favoris\
; 07 C:\Documents And Settings\Le Soldat Inconnu\Menu Démarrer\Programmes\Démarrage\
; 08 C:\Documents And Settings\Le Soldat Inconnu\Recent\
; 09 C:\Documents And Settings\Le Soldat Inconnu\SendTo\
; 10 Pas de dossier, il s'agit de : Corbeille
; 11 C:\Documents And Settings\Le Soldat Inconnu\Menu Démarrer\
; 13 C:\Documents And Settings\Le Soldat Inconnu\Mes Documents\Ma musique\
; 16 C:\Documents And Settings\Le Soldat Inconnu\Bureau\
; 17 Pas de dossier, il s'agit de : Poste de travail
; 18 Pas de dossier, il s'agit de : Favoris réseau
; 19 C:\Documents And Settings\Le Soldat Inconnu\Voisinage réseau\
; 20 C:\WINDOWS\Fonts\
; 21 C:\Documents And Settings\Le Soldat Inconnu\Modèles\
; 22 C:\Documents And Settings\All Users\Menu Démarrer\
; 23 C:\Documents And Settings\All Users\Menu Démarrer\Programmes\
; 24 C:\Documents And Settings\All Users\Menu Démarrer\Programmes\Démarrage\
; 25 C:\Documents And Settings\All Users\Bureau\
; 26 C:\Documents And Settings\Le Soldat Inconnu\Application Data\
; 27 C:\Documents And Settings\Le Soldat Inconnu\Voisinage D'impression\
; 28 C:\Documents And Settings\Le Soldat Inconnu\Local Settings\Application Data\
; 31 C:\Documents And Settings\All Users\Favoris\
; 32 C:\Documents And Settings\Le Soldat Inconnu\Local Settings\Temporary Internet Files\
; 33 C:\Documents And Settings\Le Soldat Inconnu\Cookies\
; 34 C:\Documents And Settings\Le Soldat Inconnu\Local Settings\Historique\
; 35 C:\Documents And Settings\All Users\Application Data\
; 36 C:\WINDOWS\
; 37 C:\WINDOWS\system32\
; 38 C:\Program Files\
; 39 C:\Documents And Settings\Le Soldat Inconnu\Mes Documents\Mes images\
; 40 C:\Documents And Settings\Le Soldat Inconnu\
; 41 C:\WINDOWS\system32\
; 43 C:\Program Files\Fichiers communs\
; 45 C:\Documents And Settings\All Users\Modèles\
; 46 C:\Documents And Settings\All Users\Documents\
; 47 C:\Documents And Settings\All Users\Menu Démarrer\Programmes\Outils D'administration\
; 49 Pas de dossier, il s'agit de : Connexions réseau
; 54 C:\Documents And Settings\All Users\Documents\Mes images\
; 56 C:\WINDOWS\Resources\
; 59 C:\Documents And Settings\Le Soldat Inconnu\Local Settings\Application Data\Microsoft\CD Burning\
; 61 Pas de dossier, il s'agit de : Réseau
; Voici la liste des valeurs obtenues sous Windows 98
; 00 C:\WINDOWS\Bureau\
; 01 Pas de dossier, il s'agit de : Internet explorer
; 02 C:\WINDOWS\Menu Démarrer\Programmes\
; 03 Pas de dossier, il s'agit de : Panneau de configuration
; 04 Pas de dossier, il s'agit de : Imprimantes et télécopieurs
; 05 C:\Mes documents\
; 06 C:\WINDOWS\Favoris\
; 07 C:\WINDOWS\Menu Démarrer\Programmes\Démarrage\
; 08 C:\WINDOWS\Recent\
; 09 C:\WINDOWS\SendTo\
; 10 Pas de dossier, il s'agit de : Corbeille
; 11 Menu Démarrer C:\WINDOWS\Menu Démarrer\
; 16 C:\WINDOWS\Bureau\
; 17 Pas de dossier, il s'agit de : Poste de travail
; 18 Pas de dossier, il s'agit de : Favoris réseau
; 19 C:\WINDOWS\Voisinage réseau\
; 20 C:\WINDOWS\FONTS\
; 21 C:\WINDOWS\ShellNew\
; 26 C:\WINDOWS\Application Data\
; 27 C:\WINDOWS\PrintHood\
; 32 C:\WINDOWS\Temporary Internet Files\
; 33 C:\WINDOWS\Cookies\
; 34 C:\WINDOWS\Historique\