παπι Δημοσ. 29 Σεπτεμβρίου 2011 Δημοσ. 29 Σεπτεμβρίου 2011 Πως παιρνω το [x]:\users\[y]\documents; (Με winapi) Δοκιμασα το %homepath% αλλα δεν
migf1 Δημοσ. 29 Σεπτεμβρίου 2011 Δημοσ. 29 Σεπτεμβρίου 2011 Πως παιρνω το [x]:\users\[y]\documents; (Με winapi) Δοκιμασα το %homepath% αλλα δεν Για σκέτο 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.
παπι Δημοσ. 29 Σεπτεμβρίου 2011 Μέλος Δημοσ. 29 Σεπτεμβρίου 2011 Τουφα. Δε βαριεσαι, να΄ναι καλα η μακαροναδα >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; }
migf1 Δημοσ. 29 Σεπτεμβρίου 2011 Δημοσ. 29 Σεπτεμβρίου 2011 Ή βάλε στα options του προγράμματός σου να σου δίνει ο user το path, να τελειώνεις μια και καλή για όλα τα versions των Windows
παπι Δημοσ. 29 Σεπτεμβρίου 2011 Μέλος Δημοσ. 29 Σεπτεμβρίου 2011 Μα να μην εχει μια function GetUserFolder .... Δηλαδη οι αλλοι τι κανουν για να παρουν τα λογικα my picture my documents my videos my my my ..
migf1 Δημοσ. 29 Σεπτεμβρίου 2011 Δημοσ. 29 Σεπτεμβρίου 2011 Μα να μην εχει μια function GetUserFolder .... Δηλαδη οι αλλοι τι κανουν για να παρουν τα λογικα 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, για αυτό και γίνεται "τσι Πόπης".
Directx Δημοσ. 29 Σεπτεμβρίου 2011 Δημοσ. 29 Σεπτεμβρίου 2011 Μα να μην εχει μια function GetUserFolder .... Δηλαδη οι αλλοι τι κανουν για να παρουν τα λογικα 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.
παπι Δημοσ. 29 Σεπτεμβρίου 2011 Μέλος Δημοσ. 29 Σεπτεμβρίου 2011 α.. γραψε λαθος. Αυτο ηθελα ty edit21312 Α εχει και program files. Τελεια !
taazz Δημοσ. 9 Οκτωβρίου 2011 Δημοσ. 9 Οκτωβρίου 2011 Μα να μην εχει μια function GetUserFolder .... Δηλαδη οι αλλοι τι κανουν για να παρουν τα λογικα my picture my documents my videos my my my .. Εχει μια, στην βιβλιοθήκη shell32.dll με το όνομα ShGetSpecialFolderPath στην οποία πρέπει να περάσεις σαν παράμετρο πιο folder σε ενδιαφέρει πχ CSIDL_Personal για το my documents.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.