簡體   English   中英

如何模擬shift / ctrl / alt鍵狀態?

[英]How to simulate shift/ctrl/alt key state?

有誰知道如何模擬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輸入模擬器庫。 適用於模擬按鍵和按鍵,包括shift,ctrl和alt鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM