window of the desktop
est plutôt estropiée. Impossible d'obtenir sonindex
.Finder windows
n'inclut pas la fenêtre du bureau, donc je ne peux pas vérifier que c'est le premier là.index of the first Finder window
est 1, quel que soit le bureau ayant le focus. (Aussi longtemps que d'autres fenêtres Finder existent, sinon il échouera.)
Répondre
On dirait que la propriété insertion location
se rapproche, peut-être assez proche.
insertion location (specifier, r/o) : the container in which a new folder would appear if “New Folder” was selected
tell application "Finder"
get insertion location
end tell
Result:
folder "Desktop" of folder "nad" of folder "Users" of startup disk of application "Finder"
Il y a une ambiguïté, cependant, si l'accent est mis sur une fenêtre du Finder ouvert dans le dossier de bureau; cela donne le même résultat que si l'accent est mis sur le fond d'écran. Mais peut-être que cela n'a pas d'importance pour ce que vous voulez faire.
Il semble que vous pouvez simplement vérifier la sélection ...
set desktopIsFrontmost to false
tell application "Finder"
if selection is {} then set desktopIsFrontmost to true
end tell
return desktopIsFrontmost
Alors que cela dépend de ce que l'OP veut dire par "focus", normalement "focus" et "selection" sont des concepts différents. Par exemple, si vous cliquez sur un élément (un dossier ou un fichier, disons) sur le bureau, cela signifie que l'arrière-plan du bureau a le focus (aucune autre fenêtre du Finder n'est sélectionnée) mais la propriété 'selection' reflète le ou les éléments actuellement sélectionné, comme si vous les sélectionniez dans une fenêtre du Finder qui était active. Chaque fenêtre du Finder, y compris la pseudo-fenêtre de l'arrière-plan du bureau, a sa propre valeur de sélection actuelle. –
Je suis d'accord Ned. Ma méthode manque si quelque chose est sélectionné sur le bureau. – regulus6633
En utilisant la réponse de Ned, voici ce que je suis venu avec (dans rb-appscript):
#!/usr/bin/env ruby
# encoding: UTF-8
require 'pathname'
require 'appscript'
include Appscript
path_to_desktop = Pathname.new "#{ENV['HOME']}/Desktop"
path_of_insertion_location = Pathname.new app("Finder").insertion_location.get(:result_type => :file_ref).get(:result_type => :alias).path
path_of_first_finder_window = Pathname.new app("Finder").Finder_windows.first.target.get(:result_type => :alias).path rescue nil
is_desktop_the_active_view = path_to_desktop == path_of_insertion_location && path_of_first_finder_window != path_to_desktop
Cela pourrait bien faire il. Le plus drôle est que je l'ai déjà utilisé. – kch