controlling canon camera
The official way is to use the Canon developer SDK: http://www.usa.canon.com/cusa/consumer/standard_display/sdk_homepage

You have to sign up for it but surprisingly it wasn't really a pain to do.  I was working on a small photobooth project and I explained that to them and they let us in and gave us the code (no charge or verification, think I had to sign an NDA).  This was a little while ago but I used it in C and then later a C# program to do remote capture, setup camera settings, do auto focus etc.  It's actually pretty easy to use, and the documentation is great.

There's also an open source program called gphoto that might help you too, depending on how down and dirty you want to get.  It lists your camera as supported: http://www.gphoto.org/doc/remote/

Good Luck!