QtまたはCarbonを使用してMacのアプリケーションフォルダからアプリケーションのリストを読みたい。これを行う方法がわかりません。ですから、どんなポインタも高く評価されます。
ありがとうRahul
QtまたはCarbonを使用してMacのアプリケーションフォルダからアプリケーションのリストを読みたい。これを行う方法がわかりません。ですから、どんなポインタも高く評価されます。
ありがとうRahul
ディレクトリは、opendir(3)関数とreaddir(3)関数、またはCore ServicesFileManagerのFSOpenIterator関数とFSGetCatalogInfoBulk関数のいずれかを使用して一覧表示できます。
最も簡単な解決策は、アプリケーションディレクトリを取得し、Qtヘルパーを使用してそれを反復処理することです。つまりQDirであり、名前が「.app」で終わるディレクトリとしてバンドルを検索します。フォルダ参照型からQDirを取得するためのコードを次に示します。デスクトップ/ゴミ箱/ライブラリフォルダを取得するための同様の定数が多数あります。「ドメイン」の値は重要です。多くのフォルダ(ライブラリなど)には、ユーザーごとのバージョンと、グローバルバージョンおよびネットワークバージョンがあります。FileVaultは事態をさらに複雑にする可能性があります。
FSFindFolderのドキュメントは、物事をより明確にするはずであり、Web全体に例があります。
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();
}