首先回答问题的第二部分:例如,您可以使用“最前面的应用程序”获取当前应用程序
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 论坛上询问是否有人可以编写和编译一种插件来实现此功能。