2010-01-25 102 views
4

的名單我是新來的可可,我想知道我怎樣才能打開的所有窗口的列表。我不是在談論運行程序,因爲這將是一件容易的事情。我想列出窗口,例如,如果我已預覽運行10 pdf打開,我的程序應該能夠檢索所有這些pdf的列表。 我也想知道是否有一些API可用於與外部應用程序已經打開的窗口進行交互(也可能會移動它們或執行其他操作)。 謝謝。獲取打開的窗口可可

+0

如果你是新來的可可,這是不適合你的話題。這很難,解決方案不會涉及太多可可... – 2010-01-25 23:27:32

+0

是的,我知道,但我希望能夠解決這個問題。當然,我正在學習可可,而且我對電腦編程並不陌生,所以我認爲可可對我來說不是問題。問題是,我想要做的是很難爲已經寫好的原因。 – Raffo 2010-01-30 21:10:16

回答

5

首先,可可不是首字母縮寫,所以它不是「可可」。 :-)

其次,您唯一的(公共API)選項是Accessibility API。您必須在系統偏好設置的輔助功能面板中啓用對輔助設備的訪問。

看看該文檔上手:Accessibilty Overview

+0

改成了「可可」 :-) 我會看看輔助功能API,我希望我會找到我需要的一切。謝謝。 – Raffo 2010-01-25 18:43:43

3

我已經預覽了10 PDF打開運行,我的程序應該能夠檢索與所有這些PDF格式的列表。

嗯,這是最困難的部分。您可以通過輔助功能獲取窗口,但輔助功能不會將它們與任何類型的文檔對象相關聯。

AppleScript可以用於某些應用程序,但Preview不是其中之一。事實上,大多數應用程序不是。

所以,你可以得到的窗口很輕鬆了名單,但獲得有意義的信息或從內這些窗口從棘手的範圍幾乎是不可能的。您最好的選擇可能是針對不可編寫腳本的應用程序的輔助功能,AppleScript和錯誤報告的組合,以及您的應用程序無法正常運行的知識。

+0

所以這個想法比我想象的更難...但是也許如果我只是可以得到窗口標題,我可以有文件名,但這並不明顯,根本就沒有用處。 – Raffo 2010-01-26 20:46:46

+0

是的,因爲單獨的文件名不會告訴你*它在哪裏,並且許多不同的文件可能具有相同的名稱;並且因爲用戶可能會打開多個具有相同名稱的文件,所以無法分辨哪個窗口可識別哪個文件。 – 2010-01-26 21:33:56

+0

@ PeterHosey的提示* AppleScript *絕對不是最美麗的,但卻是我找到的最簡單最直接的方式。這是我在我的Cocoa應用程序中使用的:'告訴應用程序(路徑到最前面的應用程序作爲Unicode文本)以獲取(文檔1的路徑)'獲取當前*文檔* – 2015-01-06 16:00:16

0

,如果你需要的窗口控制的窗口列表或UI具體, 如果UI具體的控制,你可以參考蘋果son of Grab例如,
它顯示在桌面上運行的Windows目錄,也許你可以修剪下來的票面您的需求。