Windows-Zeit und zugehörigen Zähler
-
Hallo an Alle,
ich bin neu hier und hab auch gleich die erste Frage.
Mir ist die Idee gekommen ein Programm zu erstellen, dass mir anzeigt,
wann ich den PC angemacht habe,
wann ich das letzte mal den PC anhatte,
wie lange ich schon am PC binund die Zeitspanne dann in einer exteren Datei abspeichert, sobald ich herunter fahre.
Nur hab ich leider keine Idee, welche Funktionen mir dafür zur Verfügung stehen, weil in meiner abgespeckten Version des Microsoft Visual C++ 6.0 Compilers die MSDN fehlt.
Das Programm sollte gleich bei PC hochfahren starten können und dann die aufgeführte Routine durchlaufen.Ich hoffe ihr könnt mir da helfen, oder einfach auch Links zu besagten Funktionen schicken, dann arbeite ich mich da rein.
Kurz:
- Wie starte ich das Programm per Autostart?
- Wie habe ich Zugriff auf die Systemzeit?
- Wie Erstelle ich einen Counter?
- Wie speicher ich die Daten?Vielen Dank,
PhiL
-
also, per autostart geht das in dem du das Programm in den Autostart Ordner einträgst (gäbe auch noch die möglich in die Registry unter Run einzutragen).
du musst im prinzip dann nur die zeit abfragen - schaue dir mal die <time.h> dazu an. hier kannst du tolle sachen mit zeit/datum abfrage machen.
du kannst dann zb. den standard timer mit setTimer setzen u. auf den Timer-Event also in die Message-Routine eintragen u. somit den Event abfangen.
dann kannst du immer die differenz zu der anfangszeit nehmen u. irgendwo ausgeben. zb. mit CString.Format() noch schön formatieren etc.
-
Die MSDN gibt es kostenfrei online: http://search.microsoft.com/results.aspx?q=&l=2&mkt=de-DE&FORM=QBME2
-
Danke schonmal.
Das Programm soll ja gleich beim starten anfangen und nicht erst noch aktiviert werden. Ist dann die Verwendung der Nachricht "Run" richtig? (Unter Nachrichtenzuordnungstabelle, Klasse C...App)
-
- Wie habe ich Zugriff auf die Systemzeit?
Wenn das Programm die richtige Laufzeit anzeigen soll solltest du nicht die Systemzeit verwenden, sondern eine "monotonic Clock". Unter Windows ist dies z.B. GetTickCount().
Eine andere "monotonic Clock" kenne ich unter Windows nicht (ausser diverse Funktionen/Timer ala timeGetTime() die im Endeffekt aber nichts anderes zurückliefern als GetTickCount()).
-
Du kannst auch unter Systemsteuerung->Geplante Tasks Programme automatisch starten (ging zumindest unter Win200, obs XP und Vista bereitstellen weiß ich nicht).
Neben dem GetTickCount kann man auch mit QueryPerformanceCounter() arbeiten. Mit dem kann man nur Zeitdifferenzen abbilden, das aber sehr genau auch unter Windows. Aber für den Fall würde ich das auch mit GetTickCount machenPhiL++ schrieb:
Danke schonmal.
Das Programm soll ja gleich beim starten anfangen und nicht erst noch aktiviert werden. Ist dann die Verwendung der Nachricht "Run" richtig? (Unter Nachrichtenzuordnungstabelle, Klasse C...App)
Das hat nix mit der Registry zu tun. Die CWinApp::Run rufst du, wenn du die MFC verwendest, nicht direkt auf. Das erledigt das Anwendungsgerüst. Diese Funktion stellt dir die Messageloop für deine Anwednung bereit.