【HSP3】HSPでMP3/WMAのアルバムアート(ジャケット画像)を取得するサンプル

開放処理とかまったくやってないです。手抜き。GetAttributeByNameを使う方法だとうまくいかないので、GetAttributeCountExで数を取得して、GetAttributeByIndexExで取得する感じですしおすし。

開放処理とかまったくやってないです。手抜き。GetAttributeByNameを使う方法だとうまくいかないので、GetAttributeCountExで数を取得して、GetAttributeByIndexExで取得する感じですしおすし。

  • hk1v
  • 2013/12/21 2:41
  • タグ:
  • タグはありません
#define IID_IWMMetadataEditor "{96406bd9-2b2b-11d3-b36b-00c04f6108ff}"
#define IID_IWMMetadataEditor2 "{203cffe3-2e18-4fdf-b59d-6e71530534cf}"
#define IID_IWMHeaderInfo "{96406bda-2b2b-11d3-b36b-00c04f6108ff}"
#define IID_IWMHeaderInfo2 "{15cf9781-454e-482e-b393-85fae487a810}"
#define IID_IWMHeaderInfo3 "{15CC68E3-27CC-4ecd-B222-3F5D02D80BD5}"
#define IID_IWMImageInfo "{9F0AA3B6-7267-4D89-88F2-BA915AA5C4C6}"
#usecom IWMMetadataEditor IID_IWMMetadataEditor
#comfunc IWMMetadataEditor_Open 3 wptr
#usecom IWMHeaderInfo3 IID_IWMHeaderInfo3
#comfunc IWMHeaderInfo3_GetAttributeByName 5 sptr, wstr, sptr, sptr, sptr
#comfunc IWMHeaderInfo3_GetAttributeCountEx 17 sptr, sptr
#comfunc IWMHeaderInfo3_GetAttributeByIndexEx 19 sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr
#uselib "Wmvcore.dll"
#func WMCreateEditor "WMCreateEditor" sptr
pEditor = 0
WMCreateEditor varptr(pEditor)
newcom pWMEdit, IID_IWMMetadataEditor, -1, pEditor
dialog "mp3;*.wma", 16
IWMMetadataEditor_Open pWMEdit, refstr
if stat != 0 : dialog "" : end
querycom pHeaderInfo, pWMEdit, IID_IWMHeaderInfo
cAttributes = 0
IWMHeaderInfo3_GetAttributeCountEx pHeaderInfo, 0xFFFF, varptr(cAttributes)
repeat cAttributes
sdim szName, 1024 + 2
NameLen = 1024
Type = 0
LangIndex = 0
DataLength = 0
IWMHeaderInfo3_GetAttributeByIndexEx pHeaderInfo, 0, cnt, varptr(szName), varptr(NameLen), varptr(Type), varptr(LangIndex), 0, varptr(DataLength)
if cnvwtos(szName) == "WM/Picture"{
sdim buf, DataLength
IWMHeaderInfo3_GetAttributeByIndexEx pHeaderInfo, 0, cnt, varptr(szName), varptr(NameLen), varptr(Type), varptr(LangIndex), varptr(buf), varptr(DataLength)
size = lpeek(buf, 9)
ptr = lpeek(buf, 13)
dupptr img, ptr, size, 2
memfile img, 0, size
picload "MEM:test.jpg"
}
loop
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX