启用或禁用系统时钟定期调整
#Include <Date.au3>
_Date_Time_SetSystemTimeAdjustment($iAdjustment, $fDisabled)
$iAdjustment | 如果周期时间的调整已启用, 24小时内每个时钟中断增加 100 纳秒单位时间. |
$fDisabled | 设置为 返回 True,禁用时间周期调整. 系统使用内部机制调整一天的时间; 系统内部调整机制可能导致时间时钟明显跳转. 设置为 返回 False, 启用时间周期调整. 将用于调整一天钟的时间, 系统将不会干扰时间调整计划,也不会尝试同步时间, 系统将在每个时钟中断加入 $iAdjustment 指定的值. |
成功: | 返回 True |
失败: | 返回 False |
#include <Date.au3>
#include <WinAPI.au3>
; 由于系统安全性,在 Vista 中 Windows API "SetSystemTimeAdjustment" 可能被拒绝
_Main()
Func _Main()
Local $aInfo
; 打开时钟这样我们可以观察到有趣的现象
Run("RunDll32.exe shell32.dll,Control_RunDLL timedate.cpl")
WinWaitActive("[CLASS:#32770]")
; 获取当前时间调整设置
$aInfo = _Date_Time_GetSystemTimeAdjustment()
; 减慢时钟
If Not _Date_Time_SetSystemTimeAdjustment($aInfo[1] / 10, False) Then
MsgBox(4096, "错误", "System clock cannot be DOWN" & @CRLF & @CRLF & _WinAPI_GetLastErrorMessage())
Exit
EndIf
MsgBox(4096, "信息", "Slowing down system clock", 2)
Sleep(5000)
; 加快时钟
If Not _Date_Time_SetSystemTimeAdjustment($aInfo[1] * 10, False) Then
MsgBox(4096, "错误", "System clock cannot be UP" & @CRLF & @CRLF & _WinAPI_GetLastErrorMessage())
EndIf
MsgBox(4096, "信息", "Speeding up system clock", 2)
Sleep(5000)
; 重设时间调整设置
If Not _Date_Time_SetSystemTimeAdjustment($aInfo[1], True) Then
MsgBox(4096, "错误", "System clock cannot be RESET" & @CRLF & @CRLF & _WinAPI_GetLastErrorMessage())
Else
MsgBox(4096, "信息", "System clock restored")
EndIf
EndFunc ;==>_Main