Alright, i done it.
Sending messages from hook/program:
In order to be able to send your messages you should call to $403980 (b35). This call takes one parameter that is pointer to ASCIIZ string. Remember that it's cdecl procedure so fix stack.
Also, you should notice that you have to call this code from same thread and at good timing. This shouldn't be done by hooking same function as before, because it only get called if there is a message processed. I decided to hook $401EC0. This procedure is also cdecl and one parameter. You can give your messages just after you return from original procedure.
Notice that this procedure is called very often, so don't hook functions to keys otherwise you'll get "Outbound message overflow".
Tools used to inspect: IDA, Process Hacker.