Пример с кейлоггером рассмотреть очень нужно для того, чтобы люди могли именно практиковать asm. Главная проблема - на чем практиковать все это, какие задачи себе придумать так чтобы это было интересно. Мне кажется что кейлоггер это как раз интересная тема для дальнейшей практики. По этому рассмотреть его стоит - это будет ожидаемое продолжение темы.
Операционка работает с активным окном. Рабочий стол - тоже окно. Поэтому кому-то сообщение по-любому дойдёт(если Windows загрузилась и работает:), но конечно не всем сразу - на всех ресурсов вычислительных не напасёшься :). Можно принудительно, конечно, перехватив сообщение, отправить его кому угодно. А можно принудительно заблокировать обработку для конкретного окна сообщения, перехватив функцию обработки сообщения в самом конкретном приложении (WH_CALLWNDPROC) или перехватить функцию GetMessage () глобально, а там уже определять - с каким окном работать (по дескриптору окна - члену функции GetMessage ).