我想使用Qt或Carbon从Mac上的Applications文件夹中读取应用程序列表。 我不知道该怎么做。所以任何指针都会受到赞赏。
由于 拉胡
答案 0 :(得分:0)
您可以使用the opendir(3) and readdir(3) functions或the Core Services File Manager中的FSOpenIterator和FSGetCatalogInfoBulk函数列出目录。
答案 1 :(得分:0)
最简单的解决方案是获取Applications目录,然后使用Qt帮助程序迭代它 - 即QDir,并查找bundle作为名称以'.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();
}