I have been also working on a keylogger for use at work. We work with an AS/400 database, and the terminal client does not have a history. So I figure I'll see what I can do with a keylogger. They seem easy enough in form, but mine crashes the application that is in focus when the input is read. Fun stuff. A little hard to debug though. I dont have a system debugger like SoftIce, maybe I dont need one, but I set a breakpoint in the code that is within the KeyboardProc function that I wrote, and it does not break. I have set the breakpoint to several positions and none of them cause it to stop before the crash.
I also want to learn about multi-threaded applications. I think I better learn that now, with multi core being the new standard in CPU development from now on.