2012-07-11 24 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中的错误或限制的解决方法,否则您无法使用它。那么,你的理由是什么?