Applescript 检测窗口是否打开

Applescript 检测窗口是否打开,applescript,Applescript,如何检测对话框窗口是否已关闭 我打开一个对话框窗口 然后我想读取窗口标题值并显示结果 然后我关上窗户 然后我想检测窗口对话框是否关闭 论数据库刷新 菜单\单击{OSIX、插件、数据库、SetRemoteDatabaseRefresh} 延迟1 将Test1设置为0 将Test1设置为应用程序进程OSIX的窗口RemoteDatabasePrefs的静态文本RemoteDatabasePrefs的值应用程序系统事件 日志测试1 按按钮取消、OSIX、RemoteDatabasePrefs-按钮按、

如何检测对话框窗口是否已关闭

我打开一个对话框窗口 然后我想读取窗口标题值并显示结果 然后我关上窗户 然后我想检测窗口对话框是否关闭

论数据库刷新 菜单\单击{OSIX、插件、数据库、SetRemoteDatabaseRefresh} 延迟1 将Test1设置为0 将Test1设置为应用程序进程OSIX的窗口RemoteDatabasePrefs的静态文本RemoteDatabasePrefs的值应用程序系统事件 日志测试1 按按钮取消、OSIX、RemoteDatabasePrefs-按钮按、程序名、窗口 在此处添加测试以检测窗口是否关闭 结束数据库刷新器

以下是我的窗口元素:

button "OK" of window "RemoteDatabasePrefs" of application process "OsiriX" of application "System Events", 
button "Cancel" of window "RemoteDatabasePrefs" of application process "OsiriX" of application "System Events", 
text field 1 of window "RemoteDatabasePrefs" of application process "OsiriX" of application "System Events", 
static text "RemoteDatabasePrefs" of window "RemoteDatabasePrefs" of application process "OsiriX" of application "System Events"
static text "Enter Remote Database Refresh Interval in minutes:" of window "RemoteDatabasePrefs" of application process "OsiriX" of application "System Events", 
button 3 of window "RemoteDatabasePrefs" of application process "OsiriX" of application "System Events", 
button 4 of window "RemoteDatabasePrefs" of application process "OsiriX" of application "System Events", 
button 5 of window "RemoteDatabasePrefs" of application process "OsiriX" of application "System Events",

作为一个傻瓜,如果我问了一些非常基本的问题,我向你道歉。我确实有一些现有的脚本要处理,而且我似乎知道它们是如何工作的,但当我尝试重构它们时,我似乎花了太多时间来寻找解决方案

这一行有点奇怪:

set Test1 to value of static text "RemoteDatabasePrefs" of window "RemoteDatabasePrefs" of ...
静态文本对象通常以其包含的文本值命名。因此,我希望该静态文本的值是RemoteDatabasePrefs

但是,如果这样做是为了获取窗口的标题文本,则不需要读取某个静态文本对象的值;您可以改为访问窗口对象的name属性或title属性:

set Test1 to the title of window "RemoteDatabasePrefs" of ...
name属性明确设置为RemoteDatabasePrefs;标题属性通常与名称相同,并且两者通常与窗口标题栏中的文本匹配。但是,您可能遇到了一个例外,名称和标题属性的值不同;在这种情况下,您需要title属性的值,它应该与标题文本匹配

要测试窗口是否已关闭,请使用exists命令测试窗口对象是否仍然存在。当窗口关闭时,从该点开始它就不再存在

tell application "System Events to tell process "OsiriX"
    set isOpen to (exists window "RemoteDatabasePrefs")
end tell
然后,变量isOpen将包含一个布尔值true或false,告诉您窗口是打开的true还是关闭的false