PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Desktop/Eigene Dateien-Pfad herausfinden



Tomo
12.07.2008, 22:54
Moin, gibt es eine Funktion zum Auslesen des Eigene Dateien bzw Desktop Pfades? Für den Windows Ordner gibt es ja z.B. GetWindowsDirectory() und für system32-Ordner GetSystemDirectory().

SharkByte~x
12.07.2008, 23:29
Guck mal in der MSDN nach der Funktion "GetSpecialFolders".

Mfg

]=-antr4xx-=[
12.07.2008, 23:29
http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx
ich glaube, mit der Funktion kannst du das auch herausfinden.
Generell solltest du immer das msdn konsultieren bei solchen Fragen...

Tomo
13.07.2008, 00:48
Danke für die Antworten.
Also ich habe es jetzt mit SHGetFolderPath() versucht, allerdings kommen folgende Fehler:

Erzeugen
[C++ Fehler] shobjidl.h(2193): E2238 Bezeichner 'FOLDERSETTINGS' mehrfach deklariert
[C++ Fehler] shobjidl.h(8095): E2238 Bezeichner 'DESKBANDINFO' mehrfach deklariert
[C++ Fehler] shlobj.h(1422): E2238 Bezeichner 'FVSHOWINFO' mehrfach deklariert
[C++ Fehler] shlobj.h(3457): E2238 Bezeichner 'SHELLFLAGSTATE' mehrfach deklariert


Mein Quellcode:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "shlobj.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
char Pfad[256];
SHGetFolderPath(NULL,CSIDL_PERSONAL,NULL,0,Pfad);
Label1->Caption=String(Pfad);
}
//---------------------------------------------------------------------------
(Borland C++ Builder 6 Personal)

Ohne das Einbinden der shlobj.h werden die Funktionen nicht gefunden, d.h. die muss schon mal drin bleiben.

enco
13.07.2008, 01:17
Versuchs mal mit getenv() und der Environment-Variable für den User-ordner. Von da brauchst du ja nur anzuhängen.

Tomo
13.07.2008, 01:35
Danke enco :)
Könnte mir vielleicht noch jemand einen Beispielpfad auf den Desktop auf Vista geben? Wegen dem anhängen, denn bei Vista weiß ich nicht so genau wie es aussieht ;)

Außerdem fehlt noch der Eigene Dateien Ordner, ich weiß nicht wo der Standardmäßig liegt aber ich habe den z.B. selbst auf F:\ gelegt. (Falls es da eine Umgebungsvariable gibt, bitte posten, ich finde sie nicht :D ) Ansonsten siehe meinen Beitrag über encos; damit würde es wohl gehen, wenn ich die Fehler wegbekomme.

]=-antr4xx-=[
13.07.2008, 10:51
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "shlobj.h"
Ich nehme an, dass in diesen Headerdateien die Bezeichner
[C++ Fehler] shobjidl.h(2193): E2238 Bezeichner 'FOLDERSETTINGS' mehrfach deklariert
[C++ Fehler] shobjidl.h(8095): E2238 Bezeichner 'DESKBANDINFO' mehrfach deklariert
[C++ Fehler] shlobj.h(1422): E2238 Bezeichner 'FVSHOWINFO' mehrfach deklariert
[C++ Fehler] shlobj.h(3457): E2238 Bezeichner 'SHELLFLAGSTATE' mehrfach deklariert schon deklariert sind.

onkel2000
13.07.2008, 17:22
http://www.bytesandmore.de/rad/cpp/snipp/sc03023.php

Tomo
13.07.2008, 18:17
@antr4xx: Ja, aber wo bzw wie behebe ich das, habe eigentlich bisher nie in dem Bereich gearbeitet.
@onkel2000: Was bringt mir die Seite? Ich finde die Lösung nicht zu meinem Problem.