Лучше использовать keybd_event (полная симуляция нажатия клавиши), потому что иначе глючат функции асинхронной проверки состояния клавиш (GetAsyncKeyState), которые анализируют не принятые сообщения, а состояние, отслеживаемое где-то на более низком уровне (где — не знаю, но думаю, что где-то повыше драйвера клавиатуры — иначе как бы симуляция это разруливала?).
Slicer
Специалист — это варвар, невежество которого не всесторонне :)