Тема: AHK:SetSystemTime в Win7 x64 проблема...
Пишу скрипт, который меняет системное время на один год. В за основу взял скрипт, приведенный в справке:
Gui, Add, Button, x16 y137 w260 h40 gButtonPressed vButtonText, Уменьшить на год
Gui, Show, w288 h189, Date changer
return
ButtonPressed:
vTime := A_Now
if(fFlag == "YEARDOWN")
{
vTime += 10000000000
A := SetSystemTime(vTime)
MsgBox %A% ;отобразить возврат функции
MsgBox %A_Now% ;отобразить текущее время, поменялось или нет
GuiControl,, ButtonText, Уменьшить на год
fFlag := "YEARUP"
}
else
{
vTime -= 10000000000
A := SetSystemTime(vTime)
MsgBox %A%
MsgBox %A_Now%
GuiControl,, ButtonText, Увеличить на год
fFlag := "YEARDOWN"
}
return
GuiClose:
if(fFlag == "YEARDOWN")
{
vTime := A_Now + 10000000000
SetSystemTime(%vTime%)
}
ExitApp
SetSystemTime(YYYYMMDDHHMISS)
; Sets the system clock to the specified date and time.
; Caller must ensure that the incoming parameter is a valid date-time stamp
; (local time, not UTC). Returns non-zero upon success and zero otherwise.
{
; Convert the parameter from local time to UTC for use with SetSystemTime().
UTC_Delta -= %A_NowUTC%, Seconds ; Seconds is more accurate due to rounding issue.
UTC_Delta := Round(-UTC_Delta/60) ; Round to nearest minute to ensure accuracy.
YYYYMMDDHHMISS += %UTC_Delta%, Minutes ; Apply offset to convert to UTC.
VarSetCapacity(SystemTime, 16, 0) ; This struct consists of 8 UShorts (i.e. 8*2=16).
StringLeft, Int, YYYYMMDDHHMISS, 4 ; YYYY (year)
NumPut(Int, SystemTime, 0, "UShort")
StringMid, Int, YYYYMMDDHHMISS, 5, 2 ; MM (month of year, 1-12)
NumPut(Int, SystemTime, 2, "UShort")
StringMid, Int, YYYYMMDDHHMISS, 7, 2 ; DD (day of month)
NumPut(Int, SystemTime, 6, "UShort")
StringMid, Int, YYYYMMDDHHMISS, 9, 2 ; HH (hour in 24-hour time)
NumPut(Int, SystemTime, 8, "UShort")
StringMid, Int, YYYYMMDDHHMISS, 11, 2 ; MI (minute)
NumPut(Int, SystemTime, 10, "UShort")
StringMid, Int, YYYYMMDDHHMISS, 13, 2 ; SS (second)
return DllCall("SetSystemTime", UInt, &SystemTime)
}
Не работает...
Система Win7 x64. Установлен AutoHotkey_L.
При работе из под пользователя, функция SetSystemTime() возвращает нулевое значение.
Если скрипт скомпилировать в .exe и запустить под администратором, то SetSystemTime() возвращает единицу (1), но системное время все равно не изменяется.
Запуск функции напрямую, как в примере, SetSystemTime("20051008142211") - дает тот же результат, что и ранее.
Вероятно, это из за операционной системы. Заставить работать скрипт не получается.
Помогите советом...