Afficher a l'aide d'un Apple Script un fichier du Finder via Xojo

Afficher a l’aide d’un Apple Script un fichier du Finder

Comment faire sous Xojo pour ouvrir la fenetre du Finder sur le fichier qui sera séléctionné par un chemin envoyez à un script… je suis novice en apple script…

voilà ce que j’ai fait pour l’apple script :

voilà le format du chemin que j’envoi :

et voilà la commande d’appelle dans Xojo :

AfficheFichierDansFinder(path)

mais ça ne fonctionne pas le Finder s’affiche mais le fichier n’est pas afficher et sélectionné comme je l’aurais voulu…

pouvez vous me dire ce que je doit faire pour que ça fonctionne ?

bon résolu, il faut le chemin au complet pour que ça fonctionne…

y a t’il un moyen d’avoir ce chemin complet avec FolderItem ? j’ai rien vu de ce coté là… pour l’instant je met à la dur le nom de mon disque dur juste avant /user/etc :frowning:

j’ai réussi mais avec un apple script, le problème c’est que folderitem ne met pas le nom du disque dans le chemin, c’est le seul problème que j’ai rencontré…

Jean-Yves Pochez je suis allez voir le lien que vous proposez, très intéressant :wink:

Merci

Une chose importante est de ne pas s’attacher au Finder. Certains utilisateurs utilisent un autre logiciel (tel que Path Finder) au lieu du Finder; votre script pourra agacer ceux qui laissent le Finder fermé, par exemple.
La méthode avec NSWorkspace est faite justement pour utiliser le navigateur de fichiers voulu par l’utilisateur.

Arnaud N,

ok merci pour l’info, en faite les applications que je développe sont à usage personnel…

Bjr Avant de chercher des solutions externes, regarde la richesse d u langage Xojo
Il te suffit d utiliser :
fichier.Parent.Open
JL

1 Like

Jean Luc Pellerin
voilà ce que j’appelle une solution miracle :slight_smile:
j’en prend bonne note, merci :slight_smile:

juste une question le fichier sera sélectionné dans le dossier du Finder ?

Bonjour Eric,
Pour Mac, j’utilise le code donné par Sam Rowlands :
https://forum.xojo.com/t/displaying-a-file-on-disk/53085/2

Non, je ne pense que Xojo n a pas cette fonctionnalité

Bonsoir François,

je suis allez voir ton lien, ça m’a l’air bien touffu voir compliquer, voilà ce que j’utilise :

Dans le bouton Xojo :

AfficheFichierDansFinder(path)

Dans le script apple script :

on run {Chemin}

tell application “Finder”

activate

reveal Chemin

end tell

end run

mon seul souci c’est que je met le nom du volume en dur a la mimin dans le code, j’ai pas trouvé le moyen d’avoir son nom par programmation, tu as une idée ?

Apple est de plus en plus réticente à permettre l’utilisation des AppleScript. Je te suggère d’explorer cette possibilité d’appels système offerte par Xojo via les “déclare”.

Il est vrai que le forum n’affiche pas le code présent dans le message de Sam Rowlands de façon très lisible. Je te le remets ci-dessous, espérant que le forum me l’affiche un peu mieux :

Public Sub ShowInFinder(f As FolderItem)
  #IF TargetCocoa
    
    // — Created for the forum, April the 4th 2020 by Sam Rowlands
    // Source: https://forum.xojo.com/t/displaying-a-file-on-disk/53085/2
    declare function NSClassFromString lib "Foundation" _
    ( className as CFStringRef ) as integer
    declare function NSMutableArrayWithCapacity lib "AppKit" selector "arrayWithCapacity:" _
    ( NSMutableArrayClass as integer, capacity as integer ) as integer
    declare sub NSMutableArrayAddObject lib "AppKit" selector "addObject:" _
    ( NSMutableArray as integer, objectInstance as integer )
    declare function NSUrlfileURLWithPathIsDirectory lib "AppKit" selector "fileURLWithPath:isDirectory:" _
    ( NSURLClass as integer, path as CFStringRef, folder as boolean ) as integer
    declare function NSWorkspaceSharedWorkspace lib "AppKit" selector "sharedWorkspace" _
    ( NSWorkspaceClass as integer ) as integer
    declare sub NSWorkspaceActivateFileViewerSelectingURLs lib "AppKit" selector "activateFileViewerSelectingURLs:" _
    ( shrdWorkSpace as integer, inUrls as integer )
    
    var fileArray as integer = NSMutableArrayWithCapacity( NSClassFromString( "NSMutableArray" ), 1 )
    NSMutableArrayAddObject( fileArray, NSUrlfileURLWithPathIsDirectory( NSClassFromString( "NSURL" ), f.nativePath, f.directory ) )
    NSWorkspaceActivateFileViewerSelectingURLs( NSWorkspaceSharedWorkspace( NSClassFromString( "NSWorkspace" ) ), fileArray )
    
  #ENDIF
End Sub

Cordialement

Bonjour, François…

Merci c’est lisible, je vais essayer cette fonction…

super ça fonctionne, je vais changer mon code pour cette solution, merci :wink: