读或写系统时钟
注意
如果在 Windows 7 或更高版本中使用这个脚本, 必须关闭用户账户控制。这也许会导致不利,将不得不权衡需求。用户账户控制,在Windows 7 中已很严格,包含下列系统功能。
进行以下操作可防止这种限制。
点击开始 > 搜索栏输入 “UAC“并打开UAC(UAC代表用户账户控制)。“用户账户控制设置“窗口打开。设置被显示为安全调节器。
拖动安全调节器到 “从不报告” 并点击 “确定” 确定设置。
重新启动计算机。
说明:
使用下列函数设置或读取系统时间:
SetSystemTime
SetLocalTime
GetSystemTime
GetLocalTime
系统中本地计算机时间和格林威治时间是有区别的。函数“SetSystemTime/ GetSystemTime”用于设置或读取格林威治时间。
函数“SetLocalTime/ GetLocalTime”用于设置或读取本地计算机时间。
两种时间会因地理的时区不同而改变,也会受到冬令时和夏令时的影响。两个函数使用方法相同。
操作本地计算机时间的函数是 Windows 系统函数,因此它独立于 WinCC 函数“GetLocalTimeString”或WinCC 早期版本的“GetLocalTime”函数。
下面的例子程序说明如何在 WinCC 中操作本地计算机时间:
示例:
读取时间并将其存入 Word 类型变量中
#pragma code("kernel32.dll") | |
VOID GetLocalTime(SYSTEMTIME *lpst); | |
#pragma code(); | |
SYSTEMTIME zeit; | |
GetLocalTime(&zeit); | |
SetTagWord("varname",zeit.wYear); | |
SetTagWord("varname",zeit.wMonth); | |
SetTagWord("varname",zeit.wDayOfWeek); | |
SetTagWord("varname",zeit.wDay); | |
SetTagWord("varname",zeit.wHour); | |
SetTagWord("varname",zeit.wMinute); | |
SetTagWord("varname",zeit.wSecond); | |
SetTagWord("varname",zeit.wMilliseconds); |
示例:
读取时间并存入原始数据类型变量中
#pragma code("kernel32.dll") | |
VOID GetLocalTime(SYSTEMTIME *lpst); | |
#pragma code(); | |
SYSTEMTIME zeit; | |
GetLocalTime(&zeit); | |
SetTagRaw("varname",(Byte*)&zeit,sizeof (SYSTEMTIME)); |