Getspecialfolder : retouver les répertoires spéciaux de windows

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 014 fois - Téléchargée 45 fois

Contenu du snippet

Vu que j'ai pas trouvé de commande fesant ça dans le FrameWork j'ai repris une source VB6 de AllAPI.Net et je l'ai mis à jour ;-)

Permets de retrouver les répertoire spéciaux de Windows ....
utilisation :
clsGetSpecialFolder.GetSpecialFolder(clsGetSpecialFolder.CSIDL.FAVORITES)

Source / Exemple :


Public Class clsGetSpecialFolder
    Public Enum CSIDL
        DESKTOP = &H0
        PROGRAMS = &H2
        CONTROLS = &H3
        PRINTERS = &H4
        PERSONAL = &H5
        FAVORITES = &H6
        STARTUP = &H7
        RECENT = &H8
        SENDTO = &H9
        BITBUCKET = &HA
        STARTMENU = &HB
        DESKTOPDIRECTORY = &H10
        DRIVES = &H11
        NETWORK = &H12
        NETHOOD = &H13
        FONTS = &H14
        TEMPLATES = &H15
    End Enum

    Const MAX_PATH = 260
    Private Structure SHITEMID
        Dim cb As Integer
        Dim abID As Byte
    End Structure
    Private Structure ITEMIDLIST
        Dim mkid As SHITEMID
    End Structure
    Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Integer, ByVal nFolder As Integer, ByRef pidl As ITEMIDLIST) As Integer
    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Integer, ByVal pszPath As String) As Integer

    Public Shared Function GetSpecialFolder(ByVal CSIDLrequest As CSIDL) As String
        Dim r As Integer
        Dim strDir As String
        Dim IDL As ITEMIDLIST
        'Get the special folder
        r = SHGetSpecialFolderLocation(0, CSIDLrequest, IDL)
        If r = 0 Then ' NOERROR Then
            'Create a buffer
            strDir = Space$(512)
            'Get the path from the IDList
            r = SHGetPathFromIDList(IDL.mkid.cb, strDir)
            'Remove the unnecessary chr$(0)'s
            strDir = strDir.Substring(0, InStr(strDir, Chr(0)) - 1)
        End If
        Return strDir
    End Function
End Class

Conclusion :


ben n'hésité pas pour les remarques ;-)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
21
Date d'inscription
jeudi 10 novembre 2005
Statut
Membre
Dernière intervention
3 juin 2008

En réalité cette fonction existe belle et bien dans le framworks :

My.Computer.FileSystem.SpecialDirectorie

Donc même plus besion d'Enum, seul une ligne de code suffit.

Bye-Bye
Messages postés
53
Date d'inscription
vendredi 2 janvier 2004
Statut
Membre
Dernière intervention
1 décembre 2008

En effet ça le fait, j'étais loin de me douter que cela pouvait être aussi simple
Messages postés
1
Date d'inscription
jeudi 27 février 2003
Statut
Membre
Dernière intervention
24 juin 2003

bon sans vouloir te vexer le FrameWork le fait :
Environment.GetFolderPath(enum)
...
Messages postés
34
Date d'inscription
jeudi 29 juin 2000
Statut
Membre
Dernière intervention
27 octobre 2003

Je ne veux pas me défendre, mais cette exemple n'est pas seulement là pour l'API mais aussi pour voir le fonctionnement de "BASE" d'une classe puisque c'est un des fondement du FrameWork !!!

Et cette classe est belle et bien en DotNet si vous douter essayer de la compiler en VB6 !! ;-)
Messages postés
530
Date d'inscription
lundi 3 juin 2002
Statut
Membre
Dernière intervention
13 juin 2004

De plus, y faut mieux dire au gens d'aller d'aller télécharger l'API-Guide que de balancer leurs exemples. Le prg est très bien fait cf -> menu de haut, 'Goodies', 'Téléchargement Utiles' et 'API-GUIDE' il est en anglais mé très précis. Je sais ca fait 15 fois que je le dit (fô qu je trouve une commande d'insertion automatique).

Sinon, allez sur http:\docvb.free.fr, y a un fichier chm moins complet, avec moins d'exemples, mé il est en français.
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.