我正在使用AppleScript来更新Microsoft Word中的文档内容。更新过程很长(可能需要超过5秒)。所以我想阻止用户在更新期间更改任何内容。你知道Microsoft或Applescript是否具有这样的功能?
在Windows中,我只能显示一个用户表单(这是一个对话框,告诉我们“我们正在更新...”)并在完成后关闭该表单。但是,我不知道我是否可以在Mac上做同样的事情(仅使用Applescript)。
答案 0 :(得分:0)
当你说" applescript"时,我不知道你的意思是" plain" applescript或AppleScriptObjC版本。如果你的意思是后者,那么我知道如何做到这一点。 我在慢速过程中使用的一种方法是在窗口的整个内容视图上放置一个叠加视图。我把它变成半透明的白色以部分遮挡窗口,并在其上放置某种消息(可能还有一个进度指示器)。您可以在IB中使用NSBox(自定义类型)进行此操作,然后创建NSBox的子类以为视图着色并覆盖mouseDown:。 MouseDown:,不需要在其中包含任何代码,只需覆盖它,捕获任何键和鼠标事件,这样它们就不会累积在事件队列中,并在您的事件后被下面的视图使用覆盖消失了。以下是我使用过的代码:
script Overlay
property parent : class "NSBox"
on awakeFromNib()
set overlayColor to current application's NSColor's colorWithCalibratedWhite_alpha_(1,.8)
setFillColor_(overlayColor)
end
on mouseDown_(theEvent)
--log "mouseDown"
end
结束脚本
我将此视图视为视图层次结构中的最顶层视图,并将其隐藏属性设置为true,直到我想要显示它。