Holy cow, I wrote a book!
wants to create a system where multiple applications can have focus,
with different users generating input and directing them at their
simulate this by posting input messages didn't work.
"Can you tell us maybe how SendInput is internally
implemented so that we can use it to simulate only part of the actions
(like without acquiring focus)?"
SendInput operates at the bottom level of the input stack.
It is just a backdoor into the same input mechanism that the keyboard
and mouse drivers use to tell the window manager that the user has
The SendInput function doesn't know what will happen to
That is handled by much higher levels of the window manager,
like the components which hit-test mouse input to see which window
the message should initially be delivered to.
So if your goal is to change the way you call SendInput
so it changes the focus management rules, you're barking up the wrong tree.
It's like asking,
"Please tell me how RAM chips work so I can use it to change
the way Lotus 1-2-3 resolves circular references."