当我尝试使用SendInput
发送单个按键和组合按键时,我无法让我的程序按住键盘按钮,直到被命令释放。使用下面的代码,我可以通过先点击发送字符'a'
, 和。但是,我无法让它永远按住按钮。'A'
shift'a'
public static void KeyDown()
{
SwitchWindow(Process.GetProcessesByName("notepad").FirstOrDefault().MainWindowHandle);
INPUT[] inputs = new INPUT[1];
KEYBDINPUT kb = new KEYBDINPUT();
//Set up generic keyboard event
inputs[0].type = INPUT_KEYBOARD;
kb.wScan = 0; // hardware scan code for key
kb.time = 0;
kb.dwExtraInfo = IntPtr.Zero;
kb.dwFlags = 0; // 0 for key press
//Press shift
kb.wVk = (ushort)KeyCode.SHIFT;
inputs[0].ki = kb;
SendInput(1, inputs, Marshal.SizeOf(inputs[0]));
//Press 'a' key
kb.wVk = (ushort)0x41; // virtual-key code for the "a" key
inputs[0].ki = kb;
SendInput(1, inputs, Marshal.SizeOf(inputs[0]));
//Release 'a' key
kb.dwFlags = KEYEVENTF_KEYUP;
kb.wVk = (ushort)0x41; // virtual-key code for the "a" key
inputs[0].ki = kb;
SendInput(1, inputs, Marshal.SizeOf(inputs[0]));
//Release 'shift' key
kb.dwFlags = KEYEVENTF_KEYUP;
kb.wVk = (ushort)KeyCode.SHIFT; // virtual-key code for the "a" key
inputs[0].ki = kb;
SendInput(1, inputs, Marshal.SizeOf(inputs[0]));
}
知道为什么,如果我删除最后两个SendInput
s,它不只是按住'A'
吗?