AIMP Forum
AIMP for PC => Дополнения / Addons => Плагины / Plugins => Topic started by: wisone on July 27, 2022, 10:23:12
-
Как получить список файлов через PlaylistManager.
Пробовал GetPlayingPlaylist но получил E_ACCESSDENIED.
-
Скорее всего вы обращаетесь к API из второстепенного потока.
-
// c++
// Core берем из метода инициализации плагина HRESULT WINAPI Initialize(IAIMPCore* Core) = 0;
// Плейлист менеджер
IAIMPServicePlaylistManager* playlistManager = nullptr;
if (FAILED(Core->QueryInterface(IID_IAIMPServicePlaylistManager, reinterpret_cast<void **>(&playlistManager))) && playlistManager) {
return;
}
// Например: активный плейлист
IAIMPPlaylist* playlist = nullptr;
if (FAILED(playlistManager->GetActivePlaylist(&playlist)) && playlist) {
playlistManager->Release();
return;
}
IAIMPPlaylistItem* track = nullptr;
IAIMPString* filename = nullptr;
const int count = playlist->GetItemCount();
// Перебираем все треки
for (int i = 0; i < count; ++i) {
if (FAILED(playlist->GetItem(i, IID_IAIMPPlaylistItem, reinterpret_cast<void**>(&track))) && track) {
continue;
}
// Файл
if (FAILED(track->GetValueAsObject(AIMP_PLAYLISTITEM_PROPID_FILENAME, IID_IAIMPString, reinterpret_cast<void**>(&filename))) && filename) {
track->Release();
continue;
}
//////////////////////////////////////////////
// Полный путь к файлу
TChar* filepath = filename->GetData();
/////////////////////////////////////////////
filename->Release();
filename = nullptr;
track->Release();
track = nullptr;
}
playlist->Release();
playlistManager->Release();