6
後,我有一個小程序,模擬CTR使用系統 + Ç & CTR + v(複製&粘貼)事件keybd_event
。問題是,在程序運行後,計算機繼續按下按鍵,然後 - 如果我鍵入a它會選擇整個文檔,如果我滾動鼠標滾輪,它將更改文本面,等它不僅發生在Visual Studio編輯器,但在任何其他程序,而程序運行如Word等已打開 這裏是我的代碼:Ctrl鍵保存下來模擬ctrl鍵按下事件和ctrl鍵向上事件
//The system keyboard event.
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
public const int VK_LCONTROL = 0xA2; //Left Control key code
public const int C = 0x43; // C key code
public const int V = 0x56; // V key code
static void Main(string[] args)
{
Thread.Sleep(1000);// So I have time to select something.
//Simulate ctrl+c
keybd_event(VK_LCONTROL, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(C, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(C, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0);
//Simulate ctrl+v
keybd_event(VK_LCONTROL, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(V, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(V, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0);
}
是否有人知道我還能有什麼辦法來解決這個問題?
請勿使用KEYEVENTF_EXTENDEDKEY,請改爲使用0。不要使用VK_LCONTROL,而應使用VK_CONTROL。 – 2014-12-27 20:41:32