2012-04-14 309 views
1

我需要一些帮助为我的appleScript。Applescript - 获取窗口的状态(可见或在码头中)

对于所有打开的窗口,我想知道哪一个被隐藏(在码头中),哪一个是可见的,哪一个是关注的?

要列出窗口使用:

tell application "System Events" 
    set procs to processes 
    set windowName to {} 
    repeat with proc in procs 
     try 
      if exists (window 1 of proc) then 
       repeat with w in windows of proc 
         copy w's name to the end of windowName 
       end repeat 
      end if 
     end try -- ignore errors 
    end repeat 
end tell 
return windowName 

我试着集中属性:

copy w's focused to the end of windowName 

,并选择属性:

copy w's selected to the end of windowName 

但是,这并不工作!

感谢您的帮助!

+0

要找出在码头上,使用'miniaturized'属性。要查看某个窗口是否可见,请使用“visible”属性。要确定当前是否选择了一个窗口(这意味着它是最前面的),请使用'frontmost'属性。希望这可以帮助你! :) – fireshadow52 2012-04-15 03:03:47

+0

谢谢。我尝试'将w的小型化复制到windowPositions的结尾,但它不起作用。你知道为什么吗? – Tokytok 2012-04-15 11:08:26

回答

-1

在Mac OS X 10.6(AppleScript的2.1.2)的application process(在System Events'而言)的windowdescription属性是"dialog"如果小型化的窗口(在Dock),以及一些其它的值(例如"standard window",但根据应用可能有所不同),如果它没有小型化。

当一个应用程序是隐藏共(使用cmd+H或“隐藏”从应用程序的菜单命令),所有的窗户将被隐藏,而不管他们是否缩小或没有,所以找出是否隐藏,使用

visible of application process "<ProcessName>" 

这是false当应用程序被隐藏。要取消隐藏它,请将该属性设置为true

要找出哪个应用程序的窗口,目前正集中(最前面/激活),使用

window 1 of application process "<ProcessName>" 

的应用程序(由windows of application process...返回)的窗口列表由垂直堆栈下令:最前面窗口是第一个,后面是第二个,依此类推。

由于OS X只有一个应用程序是最前端的时间,只有一个窗口是在前台,你会得到在目前集中的窗口是这样的:如果一个窗口

window 1 of (first application process whose frontmost is true) 
+0

+我喜欢“对话框”的窗口角色描述。 – 2012-04-16 20:10:07

+0

至少在特立独行上无法获得Windows – Idan 2014-01-04 20:12:16

+1

@Idan小牛队究竟失败了什么? [此代码](http://pastebin.com/1rV3LGRW)适用于Mac OS X 10.9.1(AppleScript 2.6),请参见[截图](http://i.imgur.com/7pRzAKH.png)。 – fanaugen 2014-01-07 13:38:50

相关问题