0

我想使用 Qt 或 Carbon 从 Mac 上的 Applications 文件夹中读取应用程序列表。我不知道该怎么做。因此,任何指针将不胜感激。

谢谢拉胡尔

4

2 回答 2

0

您可以使用核心服务文件管理器中的 opendir(3) 和 readdir(3) 函数或 FSOpenIterator 和 FSGetCatalogInfoBulk 函数列出目录。

于 2010-03-09T07:04:17.140 回答
0

最简单的解决方案是获取 Applications 目录,然后使用 Qt 帮助程序对其进行迭代 - 即 QDir,并找到名称以“.app”结尾的目录作为目录。这是一些从文件夹引用类型中获取 QDir 的代码 - 有许多类似的常量,用于获取桌面/垃圾/库文件夹。“域”值很重要——对于许多文件夹(例如库)来说,有一个每个用户的版本以及全局和网络版本。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();
}
于 2010-03-09T13:32:38.280 回答