Leia lista de aplicativos a partir da pasta Aplicações no Mac usando Qt
-
18-09-2019 - |
Pergunta
Eu quero lista de aplicativos da pasta Aplicativos do Mac usando Qt ou carbono ler. Não sei ao certo como fazer isso. Então, os ponteiros serão apreciados.
Graças Rahul
Solução
A solução mais fácil é fazer com que as aplicações dir e, em seguida, usar os ajudantes do Qt para iterar sobre ele - ou seja QDir, e encontrar pacotes como diretórios cujos nomes terminam em '.app'. Aqui está algum código para obter um QDir a partir de um tipo de referência pasta - há muitos constantes semelhantes, para obter os / lixo / pastas da biblioteca de desktop. O valor 'domínio' é importante - para muitas pastas (por exemplo, Library) há uma versão por usuário, bem como versões globais e de rede. FileVault pode complicar ainda mais as coisas.
A documentação sobre FSFindFolder deve tornar as coisas mais claras, e há exemplos em toda a 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();
}
Outras dicas
Você pode listar um diretório usando o opendir (3) e readdir (3) funções ou as funções FSOpenIterator e FSGetCatalogInfoBulk de Gerenciador de Arquivos core Services.