如何模拟shift/ctrl/alt键状态?

问题描述 投票:0回答:1

有谁知道如何模拟 shift/ctrl/alt 键状态?

基本上,我正在创建一个远程桌面应用程序,客户端使用

HTML5 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。有什么想法可以让它工作吗?

c# javascript keyboard keypress
1个回答
1
投票

我最终使用了 Windows 输入模拟器 库。非常适合模拟按键按下和按键按下,包括 Shift、Ctrl 和 Alt 键。

© www.soinside.com 2019 - 2024. All rights reserved.