Ужасный код. Такой код надо писать только когда тестируешь что то. Создавать поток в DllMain - это плохо. Так же использование Sleep и GetAsyncKeyState, получение данных в глобальной области видимости. Тебе тут надо хукать WndProc и он тебе будет давать все текущие "эвенты" окна и не придётся использовать создание потока, sleep и получение стейта клавиши.
можешь скинуть пример хорошо написанного плагина? Просто где-то мне говорили создавать поток, ты говоришь не создавать)))