Einen Wecker programmieren



  • N'Abend!
    soeben habe ich festgestellt, dass mein Wecker kaputt ist, da ich aber einen brauche und der Rechner eh die Nacht über läuft, dachte ich, ich schreib mir einen. Leider kenn ich mich in der Windows- Programmierung nicht besonders aus und habe daher ein Paar Fragen.
    Mein Plan ist folgender:
    Das Programm läuft im Hintergrund und liest in einem festen Intervall die Systemuhr aus, sobald die Zeit einer voreingestellten Alarmzeit gleicht wird ein lautes Geräusch über die Soundkarte ausgegeben. Das klingt eigentlich nicht schwierig, leider habe ich in Sachen Windows ausser ein Paar MFC- Dialoganwendungen noch nicht viel geschrieben. Daher zunächst folgende zwei Fragen:

    - Wie lese ich am besten die Systemzeit aus? (da gibt es doch bestimmt irgendwelche Header und Funktionen, die der nicht- Win Programmierer nicht kennt, hoff ich mal)
    - Wie gebe ich ein Geräusch über die Soundkarte aus?

    Ich nutze hier übrigens WinXP, falls diese Info wichtig ist. Wie immer freue ich mich über alle Hinweise und Tipps!



  • in der Windows.h befindet sich eine Funktion GetLocalTime().
    Die packt die Uhrzeit in eine SYSTEMTIME Struktur.

    Für den Vergleich (ist Momentane Zeit == Weckzeit) könntest Du die Zeiten in eine FILETIME umwandeln, dann kannste mit ihnen rechnen (subtrahieren z. b.)

    mit PlaySound() (die benötigt zusätzlich die Winmm.lib) kannst Du entweder Windows-Standardsounds abspielen oder aus Resourcen/Dateien laden und abspielen...

    Such mal in der MSDN nach den genannten Funktionen/Strukturen...



  • Mit SetTimer kannst du eine periodische Zeit-Abfrage erreichen. Besser wäre allerdings bei SetTimer die korrekte Zeit anzugeben, nach der geweckt werden soll. Dann kann dein Programm bei der nächsten WM_TIMER-Message PlaySound aufrufen und verbraucht keine unnötige Rechenzeit.

    Vielleicht kannst du auch CreateWaitableTimer gebrauchen. Damit weckt dich sein Rechner sogar wenn er im Standby ist.


Anmelden zum Antworten