Datei-Attribute auslesen; Worddateien OK, MP3s Fehler
-
hallo,
habe mir ein Programm geschrieben, das mir von Dateien in einem Ordner die "Titel"-Infos auslesen soll. Solange ich es mit Word-Dokumenten zu tun haben, funktioniert mein Code, wenn ich aber etwa die Titelinformationen einer MP3 oder anderen Datei(was auch immer) auslesen will, funktioniert es komischerweise nciht.
wieso klappt das bei word-dateien, bei allen andere nicht.?
ich versteh auch nicht so ganz, was mein Problem ist.hier mal der code, der die titel infos ausliest
std::wstring get_titel(std::wstring path) { HRESULT hr = S_OK; IPropertyStorage *pPropStg = NULL; IPropertySetStorage *pPropSetStg = NULL; PROPSPEC propspec; PROPVARIANT propRead; hr = StgOpenStorageEx( path.c_str(), STGM_READ | STGM_SHARE_EXCLUSIVE, STGFMT_ANY, 0, NULL, NULL, IID_IPropertySetStorage, reinterpret_cast<void**>(&pPropSetStg) ); if (hr != S_OK) return std::wstring(L"StgOpenStorageEx - ERROR"); hr = pPropSetStg->Open(PropSetfmtid, STGM_DIRECT | STGM_SHARE_EXCLUSIVE | STGM_READ, &pPropStg ); if (hr != S_OK) return std::wstring(L"Open - ERROR"); propspec.ulKind = PRSPEC_PROPID; propspec.propid = 0x00000002; hr = pPropStg->ReadMultiple(1, &propspec, &propRead); if (hr != S_OK) return std::wstring(L"Read - ERROR"); std::string temp = propRead.pszVal; TCHAR rtTC[1024]={0}; MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, temp.c_str(), static_cast<int>(temp.length()), rtTC, static_cast<int>(temp.length())); std::wstring rtn = rtTC; pPropSetStg->Release(); pPropStg->Release(); return rtn; }
-
Sorry, zu deinem Problem fällt mir gerade keine Löpsung ein.

Du kannst mir aber nicht zufällig sagen, welche propid für "Kategorie" verwendet wird?
Kann die einfach nicht finden...

Gruß
ChrisH
-
Eine MP3 Datei ist keine COM-Structured storage!
-
ChrisH schrieb:
Sorry, zu deinem Problem fällt mir gerade keine Löpsung ein.

Du kannst mir aber nicht zufällig sagen, welche propid für "Kategorie" verwendet wird?
Kann die einfach nicht finden...

Gruß
ChrisH0x00000002 = PIDSI_TITLE = Title
@Martin
Wie komme ich den dann an die Informationen von anderen Dateien ran, wenn nicht über COM worüber dann?
-
Bei MP3s würde ich mal vermuten, dass der Explorer die Header ausliest. Und das kannst du ja auch machen.
-
mad_martin schrieb:
Bei MP3s würde ich mal vermuten, dass der Explorer die Header ausliest. Und das kannst du ja auch machen.
hm, ja, hast recht. hab ich jetzt überhaupt nicht dran gedacht. ok danke.