Access violation when using IShellFolder2

John Chapman johnch_atms at hotmail.com
Thu Sep 10 06:43:35 UTC 2020


On Wednesday, 9 September 2020 at 22:44:50 UTC, FreeSlave wrote:
> Btw do you know how to parse a date returned by GetDetailsOf? 
> Couldn't find any examples in C++. I actually can see digits 
> representing date and time as a part of the string, but I would 
> prefer to use some winapi function to translate it into some 
> time type instead of manually parsing the result.

You could look at passing the str.pOleStr field in the 
SHELLDETAILS you got from GetDetailsOf to VarDateFromStr. It will 
give you a DATE value that VariantTimeToSystemTime will convert 
to a SYSTEMTIME from which you can get the years, months, days 
etc.

For example:

SHELLDETAILS details;
GetDetailsOf(pidl, 3, &details);
DATE date;
VarDateFromStr(details.str.pOleStr, LOCALE_USER_DEFAULT, 0, 
&date);
SYSTEMTIME st;
VariantTimeToSystemTime(date, &st);
auto year = st.wYear;
auto month = st.wMonth;

You can convert that into a more D-friendly SysTime object using 
SYSTEMTIMEToSysTime from the std.datetime package.


More information about the Digitalmars-d-learn mailing list