AIMP Forum

AIMP for PC => Дополнения / Addons => Плагины / Plugins => Topic started by: wisone on July 27, 2022, 10:23:12

Title: Плейлисты
Post by: wisone on July 27, 2022, 10:23:12
Как получить список файлов через PlaylistManager.
Пробовал GetPlayingPlaylist но получил E_ACCESSDENIED.
Title: Re: Плейлисты
Post by: Artem on July 27, 2022, 10:24:25
Скорее всего вы обращаетесь к API из второстепенного потока.
Title: Re: Плейлисты
Post by: mnlnk on December 30, 2025, 23:14:45
Code: [Select]
// 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();