注册双击桌面(但不是图标!)



这里有一个问题:我需要找出用户双击OSX桌面的时间,但不是它上面的图标

现在,我想到了以下解决方案,尽管我不确定它们是否可行:

  1. 使用桌面图标的位置(不确定如何获取)和桌面图标的大小,我们理论上可以在用户双击桌面后检查它是否在其中一个图标区域内。Contra:可能不是完美无瑕的,因为有些图标可能是透明的,或者不占整个图标的大小。

  2. 也许有一个变量告诉我们桌面上的图标是否被点击了?然后,我们可以检查用户上次双击桌子时该变量是否已激活。

我当然仍然对其他(更好的)解决方案持开放态度,但它们需要适用于Mac应用商店的沙盒。

由于多种原因,这可能不适合Mac应用商店。

首先,如何拦截窗口外的点击?有一些不同的机制(例如,事件抽头),但沙盒应用程序中不允许使用这些机制。这是故意的,有充分的理由——你不应该干扰其他应用程序或操作系统。

除此之外,很难想象无论你想做什么都不会被视为非标准的UI/HIG,这也是被拒绝的另一个原因。

但是,假设这些都不是问题,并且你可以拦截桌面上的点击,那么就没有记录在案的方法来获取桌面上的所有图标,所以你必须直接读取.DS_store文件,这意味着依赖私人实现信息,这是另一件你不允许做的事情。

最后,您必须访问.DS_store文件。除非你希望用户将(不可见的)文件或其父目录拖动到你的应用程序中,或者在NSOpenPanel或其他地方选择它,否则从沙盒内部获得此类访问权限的唯一方法是通过临时异常权限。除非你能向审查者证明你为什么需要它作为解决操作系统中错误或限制的方法,否则你不能使用它。那么,你的理由是什么?

最新更新