I want to send keys using direct Input.I was able to send key press.However i do not know how to send the key release to avoid keeping key pressed.
Here is my code:
struct INPUT
{
public UInt32 type;
public ushort wVk;
public ushort wScan;
public UInt32 dwFlags;
public UInt32 time;
public UIntPtr dwExtraInfo;
public UInt32 uMsg;
public ushort wParamL;
public ushort wParamH;
}
enum SendInputFlags
{
KEYEVENTF_EXTENDEDKEY = 0x0001,
KEYEVENTF_KEYUP = 0x0002,
KEYEVENTF_UNICODE = 0x0004,
KEYEVENTF_SCANCODE = 0x0008,
}
[DllImport("user32.dll")]
static extern UInt32 SendInput(UInt32 nInputs,
[MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] INPUT[] pInputs,
Int32 cbSize);
public static void StrokeW()
{
INPUT[] InputData = new INPUT[1];
ushort ScanCode = 0x11;
InputData[0].type = 1;
InputData[0].wScan = (ushort)ScanCode;
InputData[0].dwFlags = (uint)SendInputFlags.KEYEVENTF_SCANCODE;
SendInput(1, InputData, Marshal.SizeOf(InputData[0]));
}
Note : I tried this Simulating Keyboard with SendInput API in DirectInput applications and i was not able to make it work
The code you demonstrated appears to not be following the advice on the link you posted, which actually shows the keyup which you aren't doing:
I'd start there. It would be best to show the code you wrote that did not work using the method in the other post that appears to work.