我们有一个用applescript 编辑器制作的简单.app,当用户登录时会弹出一个显示对话框。问题是许多用户忽略了该框并且不按“确定”关闭它。如果它保持打开状态,它将阻止用户注销计算机。
有什么方法可以防止对话框阻止注销过程?
我们有一个用applescript 编辑器制作的简单.app,当用户登录时会弹出一个显示对话框。问题是许多用户忽略了该框并且不按“确定”关闭它。如果它保持打开状态,它将阻止用户注销计算机。
有什么方法可以防止对话框阻止注销过程?
我能想到的两件事:1)你可以在对话框上放一个“放弃”命令,这样它就会在一段时间后自动关闭,例如5秒......
display dialog "Hello" giving up after 5
或者您可以自己编写一个注销脚本。此脚本将在用户注销时运行。像这样的东西会起作用。
tell application "System Events"
if exists process "ApplicationName" then
set itExists to true
else
set itExists to false
end if
end tell
if itExists then
tell application "ApplicationName" to activate
tell application "System Events" to keystroke return
end if
谷歌“注销挂钩”以查找如何在注销时运行脚本。
这对我有用,强制用户注销。在 Mac OS X 中完全禁用“重新登录时重新打开 Windows”并注销确认
tell application "System Events"
keystroke "Q" using {command down, option down, shift down}
quit
end tell
不幸的是,显示对话框总是需要用户采取行动才能消失,除非您使用“放弃之后”让通知自行消失,而无需他们阅读。
假设您需要他们阅读它,并且如果您可以控制将要运行的计算机,则可以使用Growl来显示您的通知。
我突然想到你可以把显示对话框放在一个空闲的处理程序中,如果他们真的点击“确定”,脚本就会退出;如果他们没有单击“确定”,请按照其他答案中的说明使用“之后放弃”,使其在您想要的任意几秒钟后消失,然后在下一次空闲时再次将其弹出。这可能非常烦人,并且如果他们在对话框启动时碰巧注销,仍然存在阻止注销的风险。
on idle
--display the alert for 7 seconds
display alert "Very Important Message" giving up after 7
if the button returned of the result is "ok" then
quit
end if
--idle for 90 seconds
return 90
end idle
我想问一下,为什么你不只是修改AppleScript代码以在5分钟后自动关闭对话框?这绝对比“破解”硬注销系统更容易。
display dialog "Hello World" buttons "Ok" giving up after (5 * 60)
例如,此对话框将在 5 分钟后自动关闭。正如您在问题中指出的那样,如果用户真的关心它而其他人无论如何都会忽略它,那么用户阅读它的时间足够长。