I've done it a different way (but thanks to all who answered). When I call the Init function in the .DLL I pass the handle of the window of my prog. Then the key function just sends a message to the main program that a key was just pressed. I use ::PostMessage(), and if I lose a key every now and then, it won't be missed among the million-or-so other keys a month I type. I can't wait to actually get this project going because I want to start letting the world know about it! :suss: -Jason nirgle.bitdevil.com