2012-07-11 21 views
0

這裏有一個問題: 我需要找出當用戶雙擊OS X桌面,但沒有它的圖標。現在註冊雙擊桌面(但不在圖標!)

,我已經想好了以下解決方案,雖然我不知道他們是可行的:

  1. 使用桌面圖標位置(不知道如何讓他們),並在桌面的大小圖標,我們可以從理論上檢查一次用戶在桌面上雙擊,如果它位於其中一個圖標區域內。 Contra:可能不完美,因爲一些圖標可能透明或不佔用整個圖標大小。

  2. 也許有一個變量告訴我們,如果桌面上的圖標已被點擊?然後,我們可以檢查用戶上次雙擊桌面時是否激活了該變量。

我當然仍然對其他(更好的)解決方案開放,但他們需要爲Mac App Store提供沙盒處理。

+3

僅供參考,圖標位置存儲在.DS_store文件 – 2012-07-11 22:43:24

+0

謝謝Matthieu!但是,您認爲允許沙盒應用程序訪問此文件嗎? – 2012-07-11 22:48:54

+2

我不知道。如果沒有,應該可以使用Accessibility API。 – 2012-07-11 22:51:51

回答

0

由於多種原因,這可能不適合Mac App Store。

首先,你打算如何攔截窗外的點擊?這有幾種不同的機制(例如事件點擊),但是沙盒應用程序中都不允許使用這些機制。這是故意的,有一個很好的理由 - 你不應該干涉其他應用程序或操作系統。

最重要的是,很難想象無論你試圖做什麼都不會被視爲非標準的UI/HIG的東西,這是拒絕的另一個原因。

但是,假設這些都不是問題,並且您可以攔截桌面上的點擊,則沒有文檔記錄的方式來獲取桌面上的所有圖標,因此您必須直接讀取.DS_store文件,這意味着依賴關於私人執行信息,這是你不允許做的另一件事。

最後,您必須訪問該.DS_store文件。除非您希望用戶將(不可見)文件或其父目錄拖動到您的應用程序或在NSOpenPanel中選擇它,否則從沙箱內部獲得此類訪問的唯一方法是通過臨時異常授權。除非您可以向審閱者證明您爲什麼需要它作爲OS中的錯誤或限制的解決方法,否則您無法使用它。那麼,你的理由是什麼?