On Tue, 16 Jun 2015 12:26:45 +0000 C2D via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:
> Hi, > I encountered the following error: > > Error: function files.SHGetFolderPath (void* hwndOwner, int > nFolder, void* hToken, uint dwFlags, char* pszPath) is not > callable using argument types (typeof(null), int, typeof(null), > int, immutable(char)*) > > When I'm try to run this code: > ... > { > import std.utf : toUTF8; > static string cache; > > wchar[MAX_PATH + 2] buf; > > BOOL result = SHGetFolderPath(null, 0x23, null, 0, cache.ptr); > > return cache; > } > ... > extern(Windows) HRESULT SHGetFolderPath(HWND hwndOwner, int > nFolder, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath); > > I tried everything I know about D and CPP. What can be the > solution? Something like this should work import std.string : fromStringz; import std.traits : PointerTarget; auto buf = new PointerTarget!LPTSTR[MAX_PATH + 2]; auto result = SHGetFolderPath(null, 0x23, null, 0, buf.ptr); return fromStringz(buf);