[C++] Homepath

  • Kann mir jemand sagen wie ich in C++ den User Home path bzw. My Documents path rausfinden kann? möchte diesen gerne in einer variable, bzw. einem lable ausgeben.


    hab schon vieles versucht aber dinge wie GetProfilesDirevtory mit der Userenv.h funktionieren einfach nicht, oder ich bekomm es zumindest nicht auf die reihe..

  • mit SHGetFolderPath sollte das eigentlich kein Problem sein:


    TCHAR path[MAX_PATH];
    HRESULT hr = SHGetFolderPath(NULL, CSIDL_COMMON_DOCUMENTS, NULL, SHGFP_TYPE_CURRENT, path);


    https://msdn.microsoft.com/en-…rary/bb762181(VS.85).aspx

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Code
    Fehler	1	error LNK2028: Nicht aufgel÷stes Token (0A000438) ""extern "C" long __stdcall SHGetFolderPathW(struct HWND__ *,int,void *,unsigned long,wchar_t *)" (?SHGetFolderPathW@@$$J220YGJPAUHWND__@@HPAXKPA_W@Z)", auf das in Funktion ""private: void __clrcall SAMP::MyForm::MyForm_Load(class System::Object ^,class System::EventArgs ^)" (?MyForm_Load@MyForm@SAMP@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)" verwiesen wird.	C:\Users\Chopper\documents\visual studio 2013\Projects\SAMP\SAMP\MyForm.obj	SAMP
    Fehler	2	error LNK2019: Verweis auf nicht aufgel÷stes externes Symbol ""extern "C" long __stdcall SHGetFolderPathW(struct HWND__ *,int,void *,unsigned long,wchar_t *)" (?SHGetFolderPathW@@$$J220YGJPAUHWND__@@HPAXKPA_W@Z)" in Funktion ""private: void __clrcall SAMP::MyForm::MyForm_Load(class System::Object ^,class System::EventArgs ^)" (?MyForm_Load@MyForm@SAMP@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)".	C:\Users\Chopper\documents\visual studio 2013\Projects\SAMP\SAMP\MyForm.obj	SAMP
    Fehler	3	error LNK1120: 2 nicht aufgel÷ste Externe	C:\Users\Chopper\documents\visual studio 2013\Projects\SAMP\Debug\SAMP.exe	1	1	SAMP


    mit SHGetFolderPath sollte das eigentlich kein Problem sein:



    bekomme nun diese Fehler..

  • Sollte aber nicht der Fall sein, wenn du es richtig verwendet hast. Hast du auch die nötige Header-File inkludiert?


    Ich habe den Code getestet, und ich bekomme keine Fehler-Meldungen:

    C
    #include <Shlobj.h>
    
    
    int main()
    {
    	TCHAR path[MAX_PATH];
    	HRESULT hr = SHGetFolderPath(NULL, CSIDL_COMMON_DOCUMENTS, NULL, SHGFP_TYPE_CURRENT, path);
    	return 0;
    }
  • Du musst die Shell32.lib auch noch einbinden.


    Ich weiß nur nicht ob das mit Visual C++ auch funktioniert.
    Damit arbeite ich nie - sollte man im Grunde auch nicht, aber das ist eine andere Geschichte.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski