带有重启按钮的 AppleScript 进度条

问题描述

我最近负责一个项目,在我们更换新供应商时切换环境中的防病毒软件。当然,一旦旧的 A/V 软件被删除,这种努力将需要在我们的端点上重新启动。

我想做的是为我们的 Mac 客户(因为许多人在食物链上处于高位)创建一个重启通知提示,让他们知道我们在做什么。

提示将让他们知道,如果他们已登录,他们有 3 小时的时间重启 Mac 以完成软件的删除。如果他们没有在 3 小时内重启,他们的工作站将自动重启。

Applescript 有一个很棒的工作流程,可以让我与我们的用户有效沟通,但我想将停止按钮更改为重新启动,以便我们的客户可以按需重新启动他们的 Mac。

我稍后会在逻辑上进行工作,以便在他们未登录自动重新启动。

修改了我从这里“借用”的脚本之一 https://macscripter.net/viewtopic.php?id=46572

-- Progress Bar - Reboot Timer

progress_timer("03:00:00","Reboot Timer") -- call the progress timer with an HMS time and timer label
return result

------------------------------------------
-- subroutines in alphabetical order --
------------------------------------------

-- getTimeConversion converts a time in HMS format (hh:mm:ss) to a time in seconds
on getTimeConversion(HMS_Time)
    set HMSlist to the words of HMS_Time -- get {hh,mm,ss} from HMS time (p. 158 Rosenthal)
    set theHours to item 1 of HMSlist
    set theMinutes to item 2 of HMSlist
    set theSeconds to item 3 of HMSlist
    return round (theHours * (60 ^ 2) + theMinutes * 60 + theSeconds)
end getTimeConversion

-- progress_timer displays the elapsed time in a progress bar. For information on progress bars see: https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/displayProgress.html
on progress_timer(HMS_Time,timerLabel)
    set theTimeSec to getTimeConversion(HMS_Time) -- convert the HMS format to seconds
    set progress total steps to theTimeSec
    set progress completed steps to 0
    
    
    set startTime to (current date)
    repeat with i from 0 to theTimeSec -- begin at i = 0 to start the timer at 00:00:00
        set HMS_SoFar to TimetoText(i) -- convert the seconds so far to HMS format for display
        set HMS_ToGo to TimetoText(theTimeSec - i) -- convert the seconds to go to HMS format for display
        set progress completed steps to 0
        set progress description to "
Your IT Department needs to make changes to your Mac.  
  
Your workstation must be rebooted in order for these changes to take effect.
  
Your workstation will reboot in " & HMS_ToGo
        
        set progress additional description to ¬
            ""
        --"Time Elapsed:        " & HMS_SoFar & return & ¬
        --"Counting Down:        " & HMS_ToGo
        set progress completed steps to i
        set elapsedtime to (current date) - startTime -- get actual elapsed time for adjusting delay
        set lagAdjust to elapsedtime - i -- compute lag adjustment
        delay 1 - lagAdjust -- delay 1 second minus any cumulative lag that needs removing
    end repeat
    --set HMS_Elapsed to TimetoText(elapsedtime) -- convert elapsedtime back to HMS format for display
    set dialogText to null
    
    --set dialogText to "Elapsed Time: " & return & ¬
    --  "Nominal     = " & HMS_Time & return & ¬
    --  "Actual     = " & HMS_Elapsed
    tell me to activate
    
    --display dialog dialogText with title timerLabel & " Timer"
    return dialogText
end progress_timer

-- TimetoText converts a time in seconds to a time in HMS format (hh:mm:ss)
on TimetoText(theTime)
    -- parameters - TheTime [integer]: the time in seconds
    -- returns [text]: the time in the format hh:mm:ss
    -- Nigel Garvey points out this script is only valid for parameter values up to 86399 seconds (23:59:59) and offers a solution for longer times here: https://macscripter.net/viewtopic.PHP?pid=134656#p134656
    
    if (class of theTime) as text is "integer" then
        set TimeString to 1000000 + 10000 * (theTime mod days div hours) -- hours
        set TimeString to TimeString + 100 * (theTime mod hours div minutes) -- minutes
        set TimeString to (TimeString + (theTime mod minutes)) as text -- seconds
        tell TimeString to set theTime to (text -6 thru -5) & ":" & (text -4 thru -3) & ":" & (text -2 thru -1)
    end if
    return theTime
end TimetoText

这是结果输出的屏幕截图。

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...