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

标签 c# javascript keyboard keypress

有谁知道如何模拟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。有什么想法可以让它工作吗?

最佳答案

我最终使用了 Windows Input Simulator图书馆。非常适合模拟按键和按键,包括 shift、ctrl 和 alt 键。

关于c# - 如何模拟shift/ctrl/alt键状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12027966/

相关文章:

c - C中使用系统调用读取键盘事件

android - 如何向上 ScrollView 以显示对话框中使用的布局中被键盘隐藏的 EditText

c# - c++/c# 命名管道中的问题

c# - 在数组中使用 Person 类

javascript - 如何在javascript中暂停和恢复函数执行

javascript - 如何从子数组中删除数据?

iOS UITableView contentOffset 当键盘显示时

c# - 在 WordPress 中格式化 C# 的最佳方式是什么?

c# - 显示所选文件的文件名 - asp :fileupload

javascript - 在同一元素中连接 2 个句子 ImmutableJS