Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Zeit seit dem letzten Aufwachen aus dem Suspend-Modus ermitteln

  Alt 3. Jul 2015, 17:22
CallNtPowerInformation(..) gibt dir eine LastWakeTime an.

Delphi scheint (mal wieder) dafür keine Header zu haben, mit dem CPP Builder geht's aber:

Code:
#include <iostream>

#include <windows.h>
#include <PowrProf.h>
#include <ntstatus.h>
#include <System.SysUtils.hpp>
#include <System.TimeSpan.hpp>

 int _tmain(int argc, _TCHAR* argv[])
{
   POWER_INFORMATION_LEVEL infoLevel = POWER_INFORMATION_LEVEL::LastWakeTime;
   PULONGLONG lastSleepTime = new ULONGLONG();

   if( STATUS_SUCCESS != CallNtPowerInformation(infoLevel, NULL, 0, lastSleepTime, sizeof(ULONGLONG)) )
      System::Sysutils::RaiseLastOSError();

   __int64 msWakeCount = *lastSleepTime / 10 / 1000;
   std::cout << "Last wake ms count:"<< msWakeCount << "\n";
   std::cout << "GetTickCount64(): " << GetTickCount64() << "\n";

   double msDifference = GetTickCount64() - msWakeCount;
   TTimeSpan timeSpan = TTimeSpan::FromMilliseconds(msDifference);


   std::cout << "System wurde ausgeweckt vor "
      << timeSpan.Hours << " Stunden, "
      << timeSpan.Minutes << " Minuten und "
      << timeSpan.Seconds << " Sekunden.";

   std::getchar();

   return 0;
}

Geändert von Der schöne Günther ( 3. Jul 2015 um 17:25 Uhr) Grund: includes vergessen
  Mit Zitat antworten Zitat