I need to interact with an external application running, and send specific keypresses & releases. I've tried to use the SendKeys class, but it does only half of the job, as the keypress is being sent with an immediate keyrelease to the external applications.
I need to be able to simulate a "key hold down" for the external app. I'm now trying to use the SendMessage thing, but for now it won't work at all :( and I don't even get errors.
The official API is
SendInput
.You can use the WSH Scripting Shell to do this:
All you need to do is add a COM reference to "Windows Scripting Host Object", version 1.0. Everything is in the namespace
IWshRuntimeLibrary
.Ok, case solved. I actually installed VC++ to try the core keybd_event() function, and after it worked I was able to use it wisely in C#.
Here's the code, and surprisingly it's very simple. You'll need to add this using to your code to be able to import dll's: using System.Runtime.InteropServices;
This code will press and hold the '1' button for 3 secs, and then will release for 1 second and repeat the process.
(the code highlight got messed up :/, copy from 'namespace ...' to the last bracket '}')
have you tried using PostMessage to send
WM_KEYDOWN
andWM_KEYUP
?Edit
You would use it this way (I am writing in C++, but you can easily use PInvoke and ..NET)