Hola,
El "problema" que comentas yo lo achacaría al "CharCase". En cuanto a la comprobación del resultado de "GetKeyState", ha de hacerse como Román
indica aquí. Es un mensaje recogido de
este Hilo, donde se trató extensamente el tema que te ocupa. Podrías echarle un vistazo. Creo que te interesaría.