string strValue = ptrFolder->GetDetailsOf( _variant_t((IDispatch *)ptrItem), i);
这句是关键 IDispatch用法
#include <iostream>
#include <string>
#import <Shell32.dll>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
Shell32::IShellDispatchPtr ptrShell; ptrShell.CreateInstance(__uuidof(Shell32::Shell)); _variant_t var((short)Shell32::ssfRECENT); Shell32::FolderPtr ptrFolder = ptrShell->NameSpace("C://"); Shell32::FolderItemPtr ptrItem = ptrFolder->ParseName("output.mp4"); for( int i = 0; i < 10; i++ ) { string strName = ptrFolder->GetDetailsOf(0, i); cout << i <<strName << ":"; //string strValue = ptrFolder->GetDetailsOf(ptrItem, i); string strValue = ptrFolder->GetDetailsOf( _variant_t((IDispatch *)ptrItem), i); cout << strValue << endl; }
ptrItem.Release(); ptrFolder.Release(); ptrShell.Release();
CoUninitialize();
return 0; }