Je lis les informations du système à l’aide de la commande suivant qui fonctionne très bien.
Var ud As String
Shell1.Execute ("defaults read com.apple.screencapture location")
ud = Shell1.Result
MessageBox(ud) //pour l'exemple.
Hors parfois (souvent), la clé n’existe pas et est créée dans le fichier plist lors d’une modification.
C’est le cas pour les clés ‘location’ et ‘type’ par exemple (voir code ci-dessous), qui n’apparaissent QUE si vous modifiez l’emplacement des captures ou l’extension des images.
Du coup, mon code génère une erreur et ne renvoie pas la chaine ou valeur escomptée mais une chaine, ou une valeur, quelconque sans intérêt.
D’ou ma question : comment tester l’existence ou non d’une clé ?
Exemple de fichier com.apple.screencapture.plist :
dim pref as new CFPreferencesMBS
dim appId as new CFStringMBS("com.apple.screencapture")
dim key as new CFStringMBS("location-last")
dim value as variant = pref.CopyValue(key, appID, CFPreferencesMBS.kCFPreferencesCurrentUser, CFPreferencesMBS.kCFPreferencesAnyHost)
if value isa CFStringMBS then
dim v as CFStringMBS = value
dim s as string = v.str
MessageBox s
end if
Pour la clé location-last, mais vous pouvez essayer “location” comme la clé.
ceci ne ressemble pas du tout à du xml …
si c’est juste pour savoir si une clé existe, un simple Instr suffit
si c’est pour avoir la valeur de la clé, c’est plus compliqué mais on doit s’en sortir avec un regex.
cela ressemble à du JSON sans en être vraiment ?
@Christian_Schmitz
Ah oui, j’ai juste besoin de savoir si une clé, passée en paramètre (par exemple ‘location’, etc.) existe avec une fonction qui retourne juste true/false.
C’est faisable avec ce Plugin ?
(il est dans quelle bibliotheque ? Plugins/Utils ?)
Merci.
“un simple Instr suffit” : si tu pouvais développer un peu…
Pour lire la valeur de la clé, c’est pas un problème avec un ShellExecute(“default read…”)
Merci.