Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249177 (10613)

| Suchen
| Zurück zur Übersicht

Autor | Thema: SHGetSpecialFolderLocation
Rene Wagner
| Datum:12.02.02 10:09 (apollo@rw-net.de) |
Hallo, ich mal wieder. Ich schlage mich gerade mit der API-Funktion "SHGetSpecialFolderLocation" herum. Damit kann man u.a. den Pfad der IE-Favoriten auslesen (genau dafür brauch ich es). Nur steht in der Win32-HIlfe nicht, wo diese Funktion hinterlegt ist. Hat jemand die richtige Definition parat? Danke schonmal. mfG, René
Alexander Schönfeld
| Datum:12.02.02 10:54 (alexander.schoenfeld@chronologic.de) |
Hallo Rene ! Folgende URL sollte helfen :) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/Shell/reference/functions/shgetspecialfolderlocation.asp Mit freundlichem Gruss, Alexander Schönfeld
Rene Wagner
| Datum:12.02.02 11:41 (apollo@rw-net.de) |
Hallo Alexander, leider hilft mir das nur bedingt. ;( Das habe ich mir daraus hergeleitet:
    def GetSpecialFolderLocation(3) !"SHELL32","SHGetSpecialFolderLocation"
    GetSpecialFolderLocation(%hwnd,"CSIDL_FAVORITES",string#)
Jetzt die Preisfrage: wo ist mein Fehler? So funktioniert es nämlich nicht korrekt. mfG, René
Alexander Schönfeld
| Datum:12.02.02 11:56 (alexander.schoenfeld@chronologic.de) |
Hallo Rene ! Hab gerade ein Beispiel in PRFellow gefunden, shfolder.prv ! Mit freundlichem Gruss, Alexander Schönfeld
Rene Wagner
| Datum:12.02.02 13:24 (apollo@rw-net.de) |
Dummerweise hab ich kein PrFellow...sonst hät ich da schon gekuckt. mfG, René
Horst Horn
| Datum:12.02.02 13:55 (info@web-treffpunkt.de) |
Bitteschön... ;0)) ' Systemordner im Dateisystem mit SHGetSpecialFolderLocation ermitteln ' 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 6 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 %CSIDL_STARTUP ''Print "Autostart-Ordner:",$(0) '' WaitInput CU horst
Rene Wagner
| Datum:12.02.02 16:19 (apollo@rw-net.de) |
puh, da wär ich von selbst ja nie drauf gekommen. Is ja weitaus aufwändiger als ich mir das gedacht habe. :/ Aber es funktioniert super. Danke euch beiden für eure Mühe. :) mfG, René
Uwe ''Pascal'' Niemeier
| Datum:15.02.02 20:54 (Pascalxd@owl-online.de) |
Hallo Leute! Wenn wir schon mal dabei sind: Einige Pfade von Systemordnern stehen ja (zumindest unter Win9x) auch in der Registry unter HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders Spricht irgendwas dagegen, auf diese Weise z.B. den Pfad zum Autostart-Ordner zu ermitteln? Oder drohen Kompatiblitätsprobleme mit höheren Windows-Versionen o.ä. Schwierigkeiten? SeeYou Pascal
Rolf Koch
| Datum: 15.02.02 22:18 (webmaster@rokosoft.de) |
Hi Uwe, ja wird wohl nicht überall klappen, da unter (z.B.) Windows XP nicht mehr /Windows sonder /WindowsNT steht und dahinter gehts auch anders weiter. Rolf

| Zurück zur Übersicht