2010-08-14 22 views
1
  • window of the desktop est plutôt estropiée. Impossible d'obtenir son index.
  • 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

4

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.

+0

Cela pourrait bien faire il. Le plus drôle est que je l'ai déjà utilisé. – kch

0

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 
+0

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. –

+0

Je suis d'accord Ned. Ma méthode manque si quelque chose est sélectionné sur le bureau. – regulus6633

0

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