|  |  | 
|  | 
|  | 
|  | | Systemordner im Dateisystem mit SHGetSpecialFolderLocation ermitteln KompilierenMarkierenSeparieren
 Autor ist ldr. nicht bekannt.Benötigt Profan 6.6 (wg. Konstanten);
bei Verzicht auf Konstanten auf jeden Fall 6.1 wegen Addr-Funktion
Achtung: Der gewünschte Ordner muß(!) auch im Dateisystem vorliegen
(Systemsteuerung klappt daher z.B. nicht)
Im Fehlerfall ist der Return-String leer
Ich hoffe(!), daß CoTaskMemFree in diesem Fall den vom System
reservierten Speicher freigibt.
Eigentlich müßte dies über die Free-Methode des IMalloc-Interface
erfolgen, aber das geht mit Profan leider nicht.
ole32.hlp läßt die Hoffnung nicht unbegründet erscheinen, aber sicher
bin ich nicht.
Def %CSIDL_DESKTOP 0
Def %CSIDL_PROGRAMS 2
Def %CSIDL_CONTROLS 3
Def %CSIDL_PRINTERS 4
Def %CSIDL_PERSONAL 5
Def %CSIDL_FAVORITES
Def %CSIDL_STARTUP 7
Def %CSIDL_RECENT 8
Def %CSIDL_SENDTO 9
Def %CSIDL_BITBUCKET 10
Def %CSIDL_STARTMENU 11
Def %CSIDL_DESKTOPDIRECTORY 16
Def %CSIDL_DRIVES 17
Def %CSIDL_NETWORK 18
Def %CSIDL_NETHOOD 19
Def %CSIDL_FONTS 20
Def %CSIDL_TEMPLATES 21
Def %CSIDL_COMMON_STARTMENU 22
Def %CSIDL_COMMON_PROGRAMS 23
Def %CSIDL_COMMON_STARTUP 24
Def %CSIDL_COMMON_DESKTOPDIRECTORY 25
Def %CSIDL_APPDATA 26
Def %CSIDL_PRINTHOOD 27
Def SHGetSpecialFolderLocation(3) ! SHELL32, SHGetSpecialFolderLocation
Def SHGetPathFromIDList(2) ! SHELL32, SHGetPathFromIDListA
Def CoTaskMemFree(1) ! OLE32, CoTaskMemFree
Declare buffer#
Proc GetSpecialFolder
    Parameters csidl%
    Declare lpidl&, result$
    Dim buffer#, 255
    If Equ(SHGetSpecialFolderLocation(GetActiveWindow(), CSIDL%, Addr(lpidl&)), 0)
        If Neq(SHGetPathFromIDList(lpidl&, buffer#), 0)
            Let result$ = String$(buffer#, 0)
        EndIf
    EndIf
    CoTaskMemFree(lpidl&)
    Dispose buffer#
    Return result$
EndProc
Beispiel
GetSpecialFolder %CSIDL_DESKTOP
Print Desktop-Ordner:, $(0)
GetSpecialFolder 6
Print Autostart-Ordner:, $(0)
/../../function-references/xprofan/waitinput/'>WaitInput
 Salve, iF.
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 |