Problème avec des commandes "defaults write"

J’ai un problème avec quelques commandes “defaults write” que j’execute dans une boite à cocher et dont le comportement n’est pas celui attendu.
Par exemple, lorsque le code s’execute, le Dock s’escamote bien mais remonte aussitôt (un aller-retour).
Les valeurs du fichier com.apple.dock.plist me semblent pourtant conformes à ce que d’autres apps font ainsi que les Preferences Système de macOS. Cependant, alors qu’avec celles-ci le Dock se cache aussitôt et le reste. Je ne comprends pas pourquoi, le comportement de mon programme est différent. Y a t-il autre chose a faire ? (j’ai essayé de mettre “sudo” devant, mais pareil, j’ai compilé le projet pour voir si différent mais toujours pareil). Please Help !

if Me.Value then
Shell1.Execute (“defaults write com.apple.dock autohide TRUE”) //cache le Dock
else
Shell1.Execute (“defaults delete com.apple.dock autohide”) // Valeur par defaut (affiche le Dock)
end if
Shell1.Execute (“killall Dock”)

Merci.

Votre shell est bien interactive? (regardez son mode)

Non j’ai mis Shell.Mode = 0 ! Je vais essayé avec Mode = 2 et je reviens vers vous. C’est peut-être pour cela.
Merci.

@Arnaud_N,
Avec Shell1.Mode =2 (Interactive mode) plus rien ne fonctionne ! Même ce qui fonctionnait avant.
Ce n’est visiblement pas le bon mode. Quelle différence entre les modes 0 et le 1 (synchrone/asynchrone) ?
Apparemment la source de mon problème ne semble pas venir de là.
Autres suggestions ?

J’ai tenté ceci dans le Terminal (en copiant de votre message d’origine):
defaults write com.apple.dock autohide TRUE;killall Dock

et ça fait exactement comme avec Xojo. Après recherches, vous avez omis un indicateur (“-bool”).

Reprenez votre code d’origine et essayez ceci:

if Me.Value then
Shell1.Execute (“defaults write com.apple.dock autohide -bool TRUE”) //cache le Dock
else
Shell1.Execute (“defaults delete com.apple.dock autohide”) // Valeur par defaut (affiche le Dock)
end if
Shell1.Execute (“killall Dock”)
:wink:

Le mode synchrone attend que la commande ait été effectuée et renvoie le résultat dans la propriété “result”.
Le mode asynchrone fait continuer le code et appellera un événement de l’objet Shell (Completed) quand la commande sera terminée.

Grand Merci @Arnaud_N !
Tu sauves mon projet. Effectivement ca marche avec l’indicateur -bool (ou autres)
Encore merci.