如何将ContentsChanged设置为当前活动窗口的true(关闭按钮中的黑点)?

时间:2013-04-08 04:13:29

标签: applescript

如何使用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获取当前应用程序的内容? 此问题与Signifying unsaved changes by prepending * in window title - how to add a black dot in the window close button on Mac OS X?

有关

1 个答案:

答案 0 :(得分: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脚本添加和删除文档空间来设置此指示符,例如:键入空格并使用“撤消”菜单项将其删除。不幸的是,当我在TextEdit中尝试此操作时,撤消命令也删除了指示符。

我检查了Apple的API文档,并且在NSWindow类中似乎有一个方法SetDocumentEdited。遗憾的是,Apple没有正确描述它的作用,但如果DocumentEdited属性设置为true,它似乎会在红色关闭按钮中设置暗点。你可以read about it here。如果您正在使用TCL / TK,它必须能够以某种方式调用SetDocumentEdited方法。

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