SetWindowsHook, so that all keyboard messages pass through the
fix program. When our keyboard hook procedure is called, we look to see if it's being called as a result of a WM_KEYUP
message. If so, we check to see if the key really is up. If the key really is up, then we do nothing. If the key is
actually down, then we know that the WM_KEYUP message is erroneous and another key has been pressed, so we need to determine
which key that is. Once we know which key(s) are pressed, we start a timer.
Whenever the timer fires, we send a WM_KEYDOWN message for each key that is actually down and a WM_KEYUP message for each key
that is actually up (if we haven't already sent a WM_KEYUP message).