At work, we have a mindless task that has to be done manually every hour.
Basically, we have to log into this website and click around a bit to make
sure that the site is still up and running. It’s pretty ridiculous, I know,
but it has to be done nonetheless. No one in the office ever remembers to do
it, so I decided it might be nice to have an alarm of sorts. So I remembered
some of my old Micrososft Agent tinkering back in High School, and looked
around for some examples of using the Windows speech API in C#. It didn’t
take me long to figure it out, and the code for my simple text-to-speech
program is deceptively simple. Instead of providing the code as a download,
I’m just posting it here since it is so short.

usingSystem;usingSpeechLib;usingSystem.Threading;namespaceSpeak{classSpeak{///
/// The main entry point for the application.
/// [STAThread]
staticvoidMain(string[]args){SpeechVoiceSpeakFlagsflags=SpeechVoiceSpeakFlags.SVSFlagsAsync;SpVoicev=newSpVoice();if(args.Length>0){v.Speak(args[0],flags);}else{v.Speak("Please specify what you would like me to say.",flags);}v.WaitUntilDone(Timeout.Infinite);}}}

Basically all you need is the code above and the Interop.SpeechLib.dll file,
which provides access to the speech utilities. For completeness (and since I
had some trouble finding the DLL), I put a copy of the file up on here.
This program basically just echoes back whatever string you pass in at the
command line, so to get the scheduling working, I just used Windows Task
Scheduler. I scheduled a task to run every hour ever day between 8am and 10pm
(check the advanced settings of the Task Scheduler), then pointed the task to
the compiled program, passing it the string I want it to say as the argument.
Simple. And it works. I still smile every time one of the office computers
says, “It is time to check Blackboard.”