Προς το περιεχόμενο

Windows paths


παπι

Προτεινόμενες αναρτήσεις

Δημοσ.

Πως παιρνω το [x]:\users\[y]\documents; (Με winapi)

Δοκιμασα το %homepath% αλλα δεν happy.gif

Για σκέτο users είναι με GetProfilesDirectory()

 

Για το My Documents νομίζω δεν υπάρχει έτοιμος τρόπος (ίσως να κάνω λάθος όμως)!

 

Δες επίσης εδώ: http://msdn.microsoft.com/en-us/library/bb762494.aspx κι εδώ: http://msdn.microsoft.com/en-us/library/dd378457.aspx.

 

Κι εδώ: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762180%28v=vs.85%29.aspx

 

Για σκέτο users είναι με GetProfilesDirectory()

Χμ... για Vista και μετά, θέλεις SHGetKnownFolderIDList και SHGetKnownFolderPath.

Δημοσ.

Τουφα.

 

Δε βαριεσαι, να΄ναι καλα η μακαροναδα happy.gif

>template <UINT S>
BOOL GetUserFolder(WCHAR (&out)[s])
{
DWORD dwSizeDoc = 0;
DWORD dwSizeUsr = 0;
if(GetUserName(NULL,&dwSizeUsr)
||	GetProfilesDirectory(NULL,&dwSizeDoc))
	return false;
if(dwSizeDoc + dwSizeUsr > S)
	return false;
GetProfilesDirectory(out,&dwSizeDoc);
out[dwSizeDoc-1] = L'\\';
GetUserName(&out[dwSizeDoc],&dwSizeUsr);
return true;
}

 

Δημοσ.

Ή βάλε στα options του προγράμματός σου να σου δίνει ο user το path, να τελειώνεις μια και καλή για όλα τα versions των Windows :lol:

Δημοσ.

Μα να μην εχει μια function GetUserFolder blink.gif .... Δηλαδη οι αλλοι τι κανουν για να παρουν τα λογικα my picture my documents my videos my my my ..

Δημοσ.

Μα να μην εχει μια function GetUserFolder blink.gif .... Δηλαδη οι αλλοι τι κανουν για να παρουν τα λογικα my picture my documents my videos my my my ..

Έχει για όλα εκτός από το My Documents (για το My Music π.χ. έχει)... είχα κάνει edit το 1ο μου post και έδωσα 2 νέες functions, τις ShGet..(). Τις καλείς με rfid κάποιο από αυτά: http://msdn.microsoft.com/en-us/library/dd378457.aspx. Π.χ. για το My Music βάζεις: FOLDERID_Music.

 

Αλλά δεν έχει για My Documents. Η όλη ιστορία είναι πως χρησιμοποιεί symbolic links για όλα αυτά τα folders, με ασυμβατότητες μεταξύ των Win versions, για αυτό και γίνεται "τσι Πόπης".

Δημοσ.

Μα να μην εχει μια function GetUserFolder blink.gif .... Δηλαδη οι αλλοι τι κανουν για να παρουν τα λογικα my picture my documents my videos my my my ..

 

Για τα XP+, χρησιμοποιούν την SHGetSpecialFolderPath με CSIDL_MYDOCUMENTS (ή CSIDL_PERSONAL), δηλαδή:

 

>
// My Document under XP+
#include <windows.h>
#include <shlobj.h>
#include <iostream>

int main(void) {

wchar_t Path[MAX_PATH];
std::wcout << "My Document =" <<
	(SHGetSpecialFolderPathW(NULL, Path, CSIDL_MYDOCUMENTS, FALSE) ?
	Path: L"Error!") << std::endl;

return 0;
}

 

Στα XP μου λαμβάνω:

>
My Document =C:\Documents and Settings\Directx\My Documents

Και πράγματι αυτή είναι η πραγματική διαδρομή (στον δίσκο μου) προς το virtual folder "My Documents" που παρουσιάζει ο Explorer.

 

Αν βέβαια είναι αυτό το ζητούμενο..

 

Όσον αφορά άλλα My Folders, πράγματι υπάρχουν μερικά non-standard τα οποία απλά όσοι τα επιθυμούν, τα προσθέτουν στο path που επιστρέφει το CSIDL_MYDOCUMENTS.

  • 2 εβδομάδες αργότερα...
Δημοσ.

Μα να μην εχει μια function GetUserFolder blink.gif .... Δηλαδη οι αλλοι τι κανουν για να παρουν τα λογικα my picture my documents my videos my my my ..

 

Εχει μια, στην βιβλιοθήκη shell32.dll με το όνομα ShGetSpecialFolderPath στην οποία πρέπει να περάσεις σαν παράμετρο πιο folder σε ενδιαφέρει πχ CSIDL_Personal για το my documents.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...