When you post messages to an application, they go into a common queue. When those messages represent user input -- keyboard or mouse -- they get routed to the appropriate window by determining where the keyboard focus or mouse pointer is when the input arrives. If the windows you are targeting are not visible to the user, then they cannot have the keyboard focus or be under the mouse pointer.

SendMessage on the other hand does not go via the message queue, but is actually a synchronous call to the targeted window procedure. But, if you are sending them to a dialog, that usually consists of several controls; possibly including multiple input fields; then again, the keyboard focus or mouse pointer position is used to determine which of the controls within the dialog should respond to the input. If none of the sub-controls has the focus or is under the pointer -- because the dialog is hidden -- then it is probable that the input cannot be routed and so is discarded.

You might be able to bypass the problem by sending the messages directly to the required controls; but there is no guarantee that they will -- in the absence of focus and visibility -- be in a state that will allow them to respond correctly.

Indeed, given the possible nefarious uses that such techniques might be put to, it is quite possible that the system might actively inhibit the attempts to fake user input to hidden dialogs.

The bottom line is that you should probably re-think the design of what you are trying to do.

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.

"Science is about questioning the status quo. Questioning authority".

In the absence of evidence, opinion is indistinguishable from prejudice.