是否可以从仪表板小部件中创建新的小部件实例?
Posted
技术标签:
【中文标题】是否可以从仪表板小部件中创建新的小部件实例?【英文标题】:Is it possible to create new widget instances from within a Dashboard widget? 【发布时间】:2010-11-04 20:42:12 【问题描述】:这是question的后续。 简单地保留已配置的仪表板小部件实例似乎是不可能的。另一种方法是重新创建以前的实例。
是否可以从另一个小部件中创建新的仪表板小部件实例?我还没有找到关于这个主题的任何信息。
【问题讨论】:
【参考方案1】:这是可能的,但我不知道如何。交付状态小部件允许您打开其自身的新副本。你可以在help image的截图中看到+号。
【讨论】:
这很有趣。他们正在创建这样的实例: if (widget.system('open -b com.apple.dock ~/Library/Widgets/"Delivery Status.wdgt"',null).status) widget.system('open -b com.apple.dock /Library/Widgets/"Delivery Status.wdgt"',null).status;【参考方案2】:我会怀疑...我认为这存在隐含的安全风险。
查看 Apple 的代码可能会为您提供最好的服务。当您“更新”一个小部件时,您是更改标识符还是自动擦除首选项? (原谅我的无知 - 我不在我的 Mac 上,所以我无法调查自己)
不过,除此之外,您可能还想在 'flow 或 Apple 论坛上查找“被更新擦除的仪表板小部件首选项”。电子邮件列表特别有用。
【讨论】:
【参考方案3】:AFAIK 不可能以任何受支持的方式(Apple 的文档中没有提到它,Dashboard 没有 AppleScript 字典)。
但是,由于 Widget 可以访问文件系统并执行命令,因此可以破解它:修改 com.apple.dashboard.plist
并使用 killall Dock
重新启动 Dashboard(显然这不是优雅的解决方案)。
【讨论】:
【参考方案4】:我想也许您可以使用widget.system
调用小部件捆绑包上的open
命令并打开一个新副本,所以我将a simple widget 放在一起进行测试。不行。
不过,我想知道,Objective-C 插件是否会更强大,或者这是否是 Dashboard 环境中的一个限制?
【讨论】:
【参考方案5】:嗯,这在早期版本的 OS X 中是可能的。在我制作的小部件中,我使用以下代码创建了一个新实例:
widget.system('/bin/sh -c "open `pwd`"', null);
不过,现在这段代码会重新安装小部件。
【讨论】:
【参考方案6】:这是不可能的。我之前也试过。
【讨论】:
以上是关于是否可以从仪表板小部件中创建新的小部件实例?的主要内容,如果未能解决你的问题,请参考以下文章