WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 08.08.2002, 18:13   #1
RStAstl
Veteran
 
Registriert seit: 17.09.2000
Beiträge: 224


Frage Ordner "Eigene Dateien" ansprechen

Wie kann ich den Ordner für die "Eigenen Dateien" richtig ansprechen?
Konkret: unter Visual BASIC.

Es soll dann unter allen Windows-Versionen und unter allen Sprachen funktionieren!

In den Umgebungsvariablen finde ich zwar folgende beiden:
HOMEDRIVE=C:
HOMEPATH=\Dokumente und Einstellungen\USER
Aber "Eigene Dateien" finde ich schon nicht mehr. Wenn ich nun "Eigene Dateien" fix codiere, dann wird das Ding mit Englischen Fenstern nicht mehr laufen :-(
RStAstl ist offline   Mit Zitat antworten
Alt 08.08.2002, 18:51   #2
Sesa_Mina
Schwarzfußfrettchen
 
Registriert seit: 28.01.2001
Beiträge: 2.071


Standard

Da gibts einen api call dafür...

http://vbtechniques.com/content.asp?a=co&cID=624

Genaueres erfährst du unter dieser URL
____________________________________
Wann die kan Almdudler ham... \"Es gibt nur einen Weg zur Lunge, und der muss geteert werden, damit der Krebs nicht stolpert!\"
http://www.dream.at/gizmo/bunny.gif
Image is © 2001 Merle
Sterndalsäg.. ähh... jäger
Sesa_Mina ist offline   Mit Zitat antworten
Alt 09.08.2002, 00:16   #3
RStAstl
Veteran
 
Registriert seit: 17.09.2000
Beiträge: 224


Idee SHGetFolderPath

Es gibt seit W2K einen neue Funktion: SHGetFolderPath

Schreiben einer Windows XP-Anwendung, die Benutzer- und Anwendungsdaten unter dem korrekten Pfad speichert

HOWTO: Use the SHGetFolderPath Function from Visual Basic


Meine Implementierung (nach MS-Quelle)
Code:
Option Explicit

Public Const CSIDL_PERSONAL As Long = &H5       ' "Eigene Dateien"
Public Const CSIDL_FLAG_CREATE As Long = &H8000 ' Erzeugt den Ordner wenn er nicht existiert

Private Const S_OK As Long = &H0                ' Success
Private Const S_FALSE As Long = &H1             ' The Folder is valid, but does not exist
Private Const E_INVALIDARG As Long = &H80070057 ' Invalid CSIDL Value

Private Const SHGFP_TYPE_CURRENT = 0
Private Const MAX_PATH = 260

Private Declare Function SHGetFolderPath Lib "shfolder" _
    Alias "SHGetFolderPathA" _
    (ByVal hwndOwner As Long, ByVal nFolder As Long, _
    ByVal hToken As Long, ByVal dwFlags As Long, _
    ByVal pszPath As String) As Long

Public Function GetFolderPath(ByVal CSIDL As Long) As String
    Dim sPath As String
    Dim lRetVal As Long

    ' Fill our string buffer
    sPath = String(MAX_PATH, 0)

    lRetVal = SHGetFolderPath(0, CSIDL, 0, SHGFP_TYPE_CURRENT, sPath)

    Select Case lRetVal
    Case S_OK
        ' We retrieved the folder successfully
        
        ' All C strings are null terminated
        ' So we need to return the string upto the first null character
        GetFolderPath = Left(sPath, InStr(1, sPath, Chr(0)) - 1)
    Case S_FALSE
        ' The CSIDL in nFolder is valid, but the folder does not exist.
        ' Use CSIDL_FLAG_CREATE to have it created automatically
        Debug.Print "The folder does not exist"
    Case E_INVALIDARG
        ' nFolder is invalid
        Debug.Print "An invalid folder ID was specified"
    Case Else
        ' Auch das kommt vor!
        Debug.Print "Undefinierter Rückgabewert: "; lRetVal
    End Select
End Function

Mein Aufruf
Code:
Dim StrEigeneDateien As String

StrEigeneDateien = GetFolderPath(CSIDL_PERSONAL)

Seltsame Rückgabewerte
Bei einigen CSIDL's gibt es jedoch nicht die von MS angegebenen Rückgabewerte sondern einen anderen (bzw. mehrere andere).
Der Aufruf mit CSIDL 14 (dez.) / E (hex.) liefert z.B. den Rückgabewert -2147024894.
Doch Warum?
RStAstl ist offline   Mit Zitat antworten
Alt 12.08.2002, 03:37   #4
Atlan
Master
 
Registriert seit: 20.12.1999
Beiträge: 636


Standard

die Folder stehen alle in der regestrierung unter
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\User Shell Folders

ich lese sie immer von dort aus
Atlan ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:45 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag