AppleScript: Finder: как я могу определить, есть ли у рабочего стола фокус? - PullRequest
1 голос
/ 15 августа 2010
  • window of the desktop довольно покалечен. Не могу получить его index.
  • Finder windows не включает окно рабочего стола, поэтому я не могу проверить, что оно там первое.
  • index of the first Finder window равно 1 независимо от того, на каком рабочем столе находится фокус. (до тех пор, пока существуют другие окна Finder, в противном случае произойдет сбой.)

Ответы [ 3 ]

4 голосов
/ 15 августа 2010

Похоже, свойство insertion location приближается, может быть, достаточно близко.

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"

Однако существует двусмысленность, если фокус находится на окне Finder, открытом в папку Desktop; это дает тот же результат, как если бы фокус был на фоне рабочего стола. Но, возможно, это не имеет значения для того, что вы хотите сделать.

0 голосов
/ 23 августа 2010

Используя ответ Неда, вот что я придумал (в 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
0 голосов
/ 15 августа 2010

Похоже, вы можете просто проверить выбор ...

set desktopIsFrontmost to false
tell application "Finder"
    if selection is {} then set desktopIsFrontmost to true
end tell
return desktopIsFrontmost
...