13# define _WIN32_IE 0x0501
24 const char *system_dir =
nullptr;
27 static char knownpath[MAX_PATH * 3 + 128] = {0};
28 PWSTR knownpath_16 =
nullptr;
30 HRESULT hResult = SHGetKnownFolderPath(
31 FOLDERID_ProgramData, KF_FLAG_DEFAULT,
nullptr, &knownpath_16);
33 if (hResult == S_OK) {
35 strcat(knownpath,
"\\Blender Foundation\\Blender\\");
36 strcat(knownpath, versionstr);
37 system_dir = knownpath;
40 CoTaskMemFree(knownpath_16);
46 const char *user_dir =
nullptr;
48 static char knownpath[MAX_PATH * 3 + 128] = {0};
49 PWSTR knownpath_16 =
nullptr;
51 HRESULT hResult = SHGetKnownFolderPath(
52 FOLDERID_RoamingAppData, KF_FLAG_DEFAULT,
nullptr, &knownpath_16);
54 if (hResult == S_OK) {
56 strcat(knownpath,
"\\Blender Foundation\\Blender\\");
57 strcat(knownpath, versionstr);
61 CoTaskMemFree(knownpath_16);
67 const char *special_dir =
nullptr;
72 folderid = FOLDERID_Desktop;
75 folderid = FOLDERID_Documents;
78 folderid = FOLDERID_Downloads;
81 folderid = FOLDERID_Music;
84 folderid = FOLDERID_Pictures;
87 folderid = FOLDERID_Videos;
90 folderid = FOLDERID_LocalAppData;
95 "GHOST_SystemPathsWin32::getUserSpecialDir(): Invalid enum value for type parameter");
99 static char knownpath[MAX_PATH * 3] = {0};
100 PWSTR knownpath_16 =
nullptr;
101 HRESULT hResult = SHGetKnownFolderPath(folderid, KF_FLAG_DEFAULT,
nullptr, &knownpath_16);
103 if (hResult == S_OK) {
105 special_dir = knownpath;
108 CoTaskMemFree(knownpath_16);
114 static char fullname[MAX_PATH * 3] = {0};
115 wchar_t fullname_16[MAX_PATH * 3];
117 if (GetModuleFileNameW(0, fullname_16, MAX_PATH)) {
130 IShellItem *shell_item;
132 HRESULT hr = CoInitializeEx(
nullptr, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
133 if (!SUCCEEDED(hr)) {
137 hr = SHCreateItemFromParsingName(filepath_16,
nullptr, IID_PPV_ARGS(&shell_item));
139 info.psi = shell_item;
140 info.pszAppID = BLENDER_WIN_APPID_16;
141 SHAddToRecentDocs(SHARD_APPIDINFO, &info);
#define GHOST_ASSERT(x, info)
GHOST_TUserSpecialDirTypes
@ GHOST_kUserSpecialDirDesktop
@ GHOST_kUserSpecialDirMusic
@ GHOST_kUserSpecialDirPictures
@ GHOST_kUserSpecialDirVideos
@ GHOST_kUserSpecialDirDownloads
@ GHOST_kUserSpecialDirCaches
@ GHOST_kUserSpecialDirDocuments
void addToSystemRecentFiles(const char *filepath) const
const char * getSystemDir(int version, const char *versionstr) const
const char * getBinaryDir() const
const char * getUserSpecialDir(GHOST_TUserSpecialDirTypes type) const
~GHOST_SystemPathsWin32()
const char * getUserDir(int version, const char *versionstr) const
int conv_utf_16_to_8(const wchar_t *in16, char *out8, size_t size8)
#define UTF16_ENCODE(in8str)
#define UTF16_UN_ENCODE(in8str)