Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SendInput to minimized window

Tags:

c#

Is it possible to utilize the sendInput function on windows that currently do not have focus, and maybe through the use of multithreading, sendinput to multiple minimized windows at the same time, or send input to one window while you're working on another window?

I'd like to do something like this in c#

thanks in advance.

like image 840
Alex S Avatar asked May 29 '11 01:05

Alex S


1 Answers

You can only use SendInput to send input to the HWND with keyboard focus. Furthermore the window must be attached to the calling thread's message queue, so one cannot simply SetFocus either.

You'll need to get the window's thread id with GetProcessIdOfThread.

When you have the thread id you can use the AttachThreadInput function to attach your thread to the other threads input processing.

After all this you can probably use SetFocus and SendInput.

You'll probably want to detach your thread when you've sent your input.

To get access to these method you'll have to use P/Invoke for C# or C++/CLI. PInvoke.net is very handy as a reference. It will be a small chore importing all those functions, but when you are done you should be able to send input to whatever "window" you want.

Also as a side note, I'm not sure if you are aware of this, but in pure Win32 everything is regarded as a window, even a button. If you are unlucky you may have to send the input to the handle of the text control belonging to the notepad application.

like image 115
Skurmedel Avatar answered Nov 14 '22 23:11

Skurmedel