1

如何使用applescript在窗口的关闭按钮中设置黑点?从http://docs.realsoftware.com/index.php/Window.ContentsChanged_property,我猜是这样的:

tell app "CurrentApp" to set ContentsChanged to true of window 1

但它不起作用:execution error: CurrentApp got an error: Can’t make ContentsChanged of window 1 into type specifier. (-1700)

另外,如何使用applescript 获取当前应用程序的内容?这个问题与通过在窗口标题中添加 * 来表示未保存的更改有关 - 如何在 Mac OS X 上的窗口关闭按钮中添加黑点?

4

1 回答 1

0

首先回答问题的第二部分:例如,您可以使用“最前面的应用程序”获取当前应用程序

tell application "Finder"
    set frontApp to the path to the frontmost application
end tell

对你问题第一部分的简短回答是:目前不可能做你想做的事。长答案如下。

根据您的评论,我了解到您正在使用 Python 和 TCL/TK 来构建 GUI。

并非每个应用程序都能够设置“contentsChanged”指示器(显然,这在 RealBasic 中是这样调用的,但在 Apple 的 API 中却没有)。检查应用程序的 AppleScript 字典。依靠我在别处读到的内容,TextEdit 过去能够设置其文档的“修改”属性,但是当我在 Mac OS X 10.6.8 中尝试此操作时,它不再起作用。

如果您使用的是原生 Cocoa 应用程序,您可能可以通过使用一些 GUI 脚本在文档中添加和删除空格来设置此指示器,例如,键入空格并使用 Undo 菜单项将其删除。不幸的是,当我在 TextEdit 中尝试此操作时,撤消命令也删除了指示符。

我检查了 Apple 的 API 文档,在 NSWindow 类中似乎有一个方法 SetDocumentEdited。不幸的是,Apple 没有正确描述它的功能,但如果 DocumentEdited 属性设置为 true,它似乎会在红色关闭按钮中设置黑点。你可以在这里阅读。如果您使用的是 TCL/TK,它必须能够以某种方式调用 SetDocumentEdited 方法。

您不能告诉操作系统更改窗口的 DocumentEdited 属性(这相当于您在 AppleScript 字典中找到的“已修改”属性)。您正在与之交谈的(Python-TCL/TK)应用程序需要实现此功能。如果 TCL/TK 没有这方面的命令,那么无论您使用 AppleScript 还是 Python 或其他东西,这都可能是不可能的。我建议您在 TCL/TK 论坛上询问是否有人可以编写和编译一种插件来实现此功能。

于 2013-04-08T10:43:43.153 回答