Ввод, как и большинство сообщений в Win32, проходит две фазы. Сначала это отправлено в очередь. На данный момент окно назначения уже определено. Затем, когда принимающая программа простаивает, она обрабатывается. Даже если ввод не может быть обработан до тех пор, пока второе окно не будет перенесено в Z-порядок, входные сообщения должны были быть поставлены в очередь в первое окно.
Поведение зависит только от того, к какому окну поступает ввод, или же программа должна быть впереди, когда сообщение полностью обработано?
В любом случае, поскольку вы пытаетесь отправить входные данные в определенные окна, а не на то, что пользователь сделал активным, почему бы не PostMessage события, такие как WM_BUTTONDOWN и WM_KEYPRESS, напрямую в их пункты назначения?