The program itself is provided in parts 1, 2, and 3. So I compiled my program and ran it from the command line. Here's a snippet of what I got back:
Properties for 'scan0010.jpg'Folder name: propshowType: JPEG ImageName: scan0010.jpgSize: 638 KBAttributes: ADate modified: ?9/?29/?2006 ??10:12 PMDate created: ?9/?30/?2006 ??8:00 AMDate accessed: ?9/?30/?2006 ??8:00 AMTitle: Mountain goatAuthors: Ben KarasTags: Sol Duc Valley; WildlifeContent created: ?9/?29/?2006 ??10:12 PMDate last saved: ?9/?29/?2006 ??10:12 PMWidth: ?1139 pixelsHeight: ?769 pixelsHorizontal resolution: ?200 dpiVertical resolution: ?200 dpiBit depth: 24Dimensions: ?1139 x 769?Rating: 5 Stars...[snip 20 more lines]...
Ok, now you get a sense about what properties are on a file! JPGs happen to be one of the better supported filetypes on the system. We can see titles, authors, ratings, dimensions, etc on JPG files. Also notice the variety of information. Some items are dates, others are numbers. There's even a list of tags in there!
Now the question you really want to ask is "What are those "?" doing in there?" This is a very common question. The ? result from a bad UNICODE->OEM conversion. IPropertyDescription::FormatForDisplay inserts UNICODE LTR and RTL characters (0x200e and 0x200f). These characters let English strings display correctly on Arabic builds. Arabic strings get similar characters so that they display correctly on left to right builds. UNICODE applications display these LTR and RTL characters correctly.
But the command line (and WideCharToMultiByte) for some reason converts these to "?". Oops.
This is a time when I wish FormatForDisplay had a flag to strip these characters out; alas.