Что нового

Как получить длительность работы компьютера во времени(аптайм компьютера)?

kasper_sky

Antivirus
Сообщения
116
Репутация
1
Собственно, нужно получить время работы компьютера. Есть ли какие-либо стандартные макро или дополнительные библиотеки?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
kasper_sky
Из справки к функции _WinAPI_GetTickCount() из WinAPIEx.au3:
Код:
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

ConsoleWrite(_WinAPI_StrFromTimeInterval(_WinAPI_GetTickCount()) & @CR)
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Либо так

Код:
#include <Date.au3>
  Local  $Mins, $Hour, $Secs
_TicksToTime( _Date_Time_GetTickCount(), $Hour, $Mins, $Secs)
$Time = StringFormat("%02i:%02i:%02i", $Hour, $Mins, $Secs)
ConsoleWrite($Time  & @CRLF)
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Ну и ещё более геморройный способ до кучи:
Код:
#include <Date.au3>
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$Output = ""
$Output &= "Computer: " & $strComputer & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_System", "WQL", _
        $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) Then
    For $objItem In $colItems
        $SystemUptime = ($objItem.SystemUpTime / 60)
        Dim $SystemUptimeDay
        Dim $SystemUptimeHour
        Dim $SystemUptimeMin
        Dim $SystemUptimeSec
        $SystemUptimeDay = Int($objItem.SystemUpTime / 86400)
        $SystemUptimeHour = Int($objItem.SystemUpTime / 3600) - ($SystemUptimeDay * 24)
        $SystemUptimeMin = Int($objItem.SystemUpTime / 60) - ($SystemUptimeHour * 60) - ($SystemUptimeDay * 24 * 60)
        $SystemUptimeSec = Int($objItem.SystemUpTime) - ($SystemUptimeMin * 60) - ($SystemUptimeHour * 60 * 60) - ($SystemUptimeDay * 24 * 60 * 60)
        MsgBox(0, "Uptime: ", "Дней: " & $SystemUptimeDay & " Часов: " & $SystemUptimeHour & " Минут: " & $SystemUptimeMin & " Секунд: " & $SystemUptimeSec)
    Next
Else
    MsgBox(0, "Uptime", "No WMI Objects Found for class: " & "Win32_PerfFormattedData_PerfOS_System")
EndIf

очень долго отрабатывает.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
kasper_sky,
Еще, вроде, так можно:
Код:
#Include <WinAPIEx.au3>

ConsoleWrite(_WinAPI_StrFromTimeInterval(TimerDiff(0)) & @CR)
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
http://autoit-script.ru/index.php?topic=1449.0
 
Верх