Прочитать список приложений из папки Applications на Mac с помощью Qt - PullRequest
0 голосов
/ 09 марта 2010

Я хочу прочитать список приложений из папки Applications на Mac, используя Qt или Carbon. Я не уверен, как это сделать. Так что любые указатели будут оценены.

Спасибо Рахул

Ответы [ 2 ]

0 голосов
/ 09 марта 2010

Самое простое решение - получить dir для Applications, а затем использовать помощники Qt для его итерации - т.е. QDir и найти пакеты в виде каталогов, имена которых заканчиваются на «.app». Вот некоторый код для получения QDir из ссылочного типа папки - есть много похожих констант для получения папок desktop / trash / library. Значение 'domain' важно - для многих папок (например, Library) существует версия для каждого пользователя, а также глобальная и сетевая версии. FileVault может еще больше усложнить ситуацию.

Документация по FSFindFolder должна прояснить ситуацию, и в Интернете есть примеры.

static QDir applicationsDir()
{
    short domain = kOnAppropriateDisk;
    FSRef ref;
    OSErr err = FSFindFolder(domain, kApplicationsFolderType, false, &ref);
    if (err) {
        return QDir();
    }

    return QDir(getFullPath(ref));
}

/*
    Constructs a full unicode path from a FSRef.
*/
static QString getFullPath(const FSRef &ref)
{
    QByteArray ba(2048, 0);
    if (FSRefMakePath(&ref, reinterpret_cast<UInt8 *>(ba.data()), ba.size()) == noErr)
        return QString::fromUtf8(ba).normalized(QString::NormalizationForm_C);
    return QString();
}
0 голосов
/ 09 марта 2010

Вы можете получить список каталогов, используя функции opendir (3) и readdir (3) или функции FSOpenIterator и FSGetCatalogInfoBulk из Диспетчер файлов базовых служб .

...