Simulering af keyboard events
Som en del af et program, jeg er ved at lave, har jeg lavet en simulering af key presses. En klient forbinder til en host og denne key presses sendes så til hosten, hvor de simuleres på vedkommendes maskine.Problemet er, at dette kun virker, når hosten er ude i windows. Når man er inde i et spil som fx Death Rally (Dos spil), Dos Box eller spiller et spil i en Amiga Emulator, så virker simuleringen af keyboard events ikke.
Jeg benytter keybd_event(...) som jeg importerer fra user32.dll
Den klasse jeg har lavet til at håndtere denne simulering er således ud:
namespace Tools
{
public class KeyboardSimulator
{
[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, long dwFlags, long dwExtraInfo);
public const short KEYEVENTF_EXTENDEDKEY = 0x0001;
public const short KEYEVENTF_KEYUP = 0x0002;
public void KeyDown(byte KCC)
{
keybd_event(KCC, 0, 0, 0);
}
public void KeyUp(byte KCC)
{
keybd_event(KCC, 0, KEYEVENTF_KEYUP, 0);
}
}
}