Favoriten Ordner auslesen???

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

mukki

Betreff: Favoriten Ordner auslesen???

BeitragMo, Aug 07, 2006 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Hab eine kurze Frage auf die ich bisher noch keine Antwort gefunden habe.
Ich will auf den Ordner "C:\dokumente und einstellungen\User\Favoriten\" zugreifen. Gibt es eine Möglichkeit den Pfad aus windows bzw der Registry auszulesen, ohne dass man per requestDir jedes mal manuell danach fragen muss?
Hatte erst gedacht, dass es ja reichen würde den Benutzernamen zu kennen, aber dieser Pfad ist ja abhängig von der Systemsprache sowie der System-Partition.
Unter den windows-Umgebungsvariablen bin ich auch nicht wirklich fündig geworden, wie man sich den Pfad zusammensetzen könnte.

Vielen Dank im Vorraus für die Mühe!!!

Mfg
Mukki
 

mukki

BeitragMo, Aug 07, 2006 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab jetzt rausgefunden dass ich mit
GetEnv$("USERPROFILE") immerhin schonmal fast im Zielordner bin fehlt nur noch der Name des Favoriten-Ordners. Very Happy
 

Dreamora

BeitragMo, Aug 07, 2006 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt dummerweise keine Umgebungsvariable dafür

Das hat ziemlich "böse" Folgen: In jeder Sprache heisst der Favoritenordner nämlich anders ... Ich zb hab englische Version drauf, da heisst Favorites. Auf D heisst Favoriten etc ...

gibts nen Grund warum du da genau rein willst in den Ordner?

edit: hier ist eine liste aller variablen: http://vlaurie.com/computers2/...onment.htm

In blitz einfach jeweils ohne die % einzugeben
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Aug 07, 2006 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht auch mit dieser Userlib

Code: [AUSKLAPPEN]
;.lib "shell32.dll"
;SHGetSpecialFolderPath%(hwndOwner$,lpszPath*,nFolder%,fCreate%):"SHGetSpecialFolderPathA"

Const CSIDL_DESKTOP                 = 0
Const CSIDL_INTERNET                = 1
Const CSIDL_PROGRAMS                = 2
Const CSIDL_CONTROLS                = 3
Const CSIDL_PRINTERS                = 4
Const CSIDL_PERSONAL                = 5
Const CSIDL_FAVORITES               = 6
Const CSIDL_STARTUP                 = 7
Const CSIDL_RECENT                  = 8
Const CSIDL_SENDTO                  = 9
Const CSIDL_BITBUCKET               = 16
Const CSIDL_STARTMENU               = 17
Const CSIDL_NETWORK                 = 18
Const CSIDL_NETHOOD                 = 19
Const CSIDL_FONTS                   = 20
Const CSIDL_TEMPLATES               = 21
Const CSIDL_COMMON_STARTMENU        = 22
Const CSIDL_COMMON_PROGRAMS         = 23
Const CSIDL_COMMON_STARTUP          = 24
Const CSIDL_COMMON_DESKTOPDIRECTORY = 25
Const CSIDL_APPDATA                 = 26
Const CSIDL_PRINTHOOD               = 27
Const CSIDL_LOCAL_APPDATA           = 28
Const CSIDL_ALTSTARTUP              = 29
Const CSIDL_COMMON_ALTSTARTUP       = 30
Const CSIDL_COMMON_FAVORITES        = 31
Const CSIDL_INTERNET_CACHE          = 32
Const CSIDL_COOKIES                 = 33
Const CSIDL_HISTORY                 = 34
Const CSIDL_COMMON_APPDATA          = 35
Const CSIDL_WINDOWS                 = 36
Const CSIDL_SYSTEM                  = 37
Const CSIDL_PROGRAM_FILES           = 38
Const CSIDL_MYPICTURES              = 39
Const CSIDL_PROFILE                 = 40
Const CSIDL_SYSTEMX86               = 41
Const CSIDL_PROGRAM_FILESX86        = 42
Const CSIDL_PROGRAM_FILES_COMMON    = 43
Const CSIDL_PROGRAM_FILES_COMMONX86 = 44
Const CSIDL_COMMON_TEMPLATES        = 45
Const CSIDL_COMMON_DOCUMENTS        = 46
Const CSIDL_COMMON_ADMINTOOLS       = 47
Const CSIDL_ADMINTOOLS              = 48
Const CSIDL_CONNECTIONS             = 49

folderbank=CreateBank(260*4)
Graphics 800,200,0,2

SHGetSpecialFolderPath(0, folderbank, CSIDL_FAVORITES  , 0)

Print getbankstring$(folderbank, 260*4)
Print "Taste ..."
WaitKey
End

Function GetBankString$(bank, size)
  For i=0 To size-1
    wert$=wert$ + PeekByte(bank, i)
  Next
  While Len(wert$)<>0
    If Int(Left$(wert$, 1))>2 Then
      antwort$=antwort$ + Chr$(Int(Left$(wert$, 2)))
      wert$=Mid$(wert$, 3)
    Else
      antwort$=antwort$ + Chr$(Int(Left$(wert$, 3)))
      wert$=Mid$(wert$, 4)
    End If
  Wend
  FreeBank bank
  Return Trim$(antwort$)
End Function
Code: [AUSKLAPPEN]
SHGetSpecialFolderPath(0, folderbank, CSIDL_FAVORITES  , 0)
[BB2D | BB3D | BB+]
 

mukki

BeitragMo, Aug 07, 2006 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau das mit der Sprache habe ich auch überlegt. Hab jetzt glaub ich ne Lösung gefunden: undzwar gibt es in der Registry folgende Schlüssel
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
"Favorites"=%USERPROFILE%\Favoriten

sowie [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
"Favorites"="C:\\Dokumente und Einstellungen\\USER\\Favoriten"

Ich denke das man damit das Problem umgehen kann. Wäre nett wenn Du bei Dir mal nachgucken könntest, ob sie bei Dir auch stimmen.

Danke,
Mukki
 

$tankY

BeitragDo, Aug 10, 2006 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab Win2k auf Englisch, da gibt es den Eintrag "Common Favorites", weil ich keinen Favoriten-Ordner angelegt habe.

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group