有谁知道我如何模拟 shift//键状态ctrl?alt
基本上我正在创建一个远程桌面应用程序,客户端使用 aHTML5 canvas
和服务器端运行C#
应用程序。服务器端应用程序捕获屏幕,发送它并模拟客户端发送的任何按键。
除了按键之外,我一切正常。客户端发送:
kd; KEYCODE HERE
当一个键被按下并且
ku; KEYCODE HERE
当它被释放时(keyup)。我正在使用这段代码:
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
// - - - - -
// Keyboard events
if (receivedData[0] == "kd")
{
// Shift key pressed
if (receivedData[1] == "16")
{
keybd_event((byte)Convert.ToInt32(Keys.LShiftKey), 0, KEYEVENTF_EXTENDEDKEY, 0);
return;
}
keybd_event((byte)Convert.ToInt32(receivedData[1]), 0, KEYEVENTF_EXTENDEDKEY, 0);
}
if (receivedData[0] == "ku")
{
// Shift key released
if (receivedData[1] == "16")
{
keybd_event((byte)Convert.ToInt32(Keys.LShiftKey), 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
return;
}
keybd_event((byte)Convert.ToInt32(receivedData[1]), 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
普通键工作正常,但任何有状态的键都不能正常工作。左移收到的 javascript 键码是 16。有什么想法可以让它工作吗?