如何通过代码按住Ctrl键

我正在写一个unit testing,如果(Control.ModifierKeys == Keys.Control),某个函数将被深入调用堆栈。我可以为运行unit testing的特定情况添加一个标志或者其他东西,但是太脏了! 如何通过代码将ModifierKeys设置为Ctrl? 我正在使用C#.Net 4.0。

您可以使用P / Invoke调用keybd_event函数来合成击键。

首先声明以下内容:

 [DllImport("user32.dll", SetLastError = true)] static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); public const uint KEYEVENTF_KEYUP = 0x02; public const uint VK_CONTROL = 0x11; 

然后,在您的测试中,使用:

 // Press the Control key. keybd_event(VK_CONTROL, 0, 0, 0); try { // Perform test. } finally { // Release the Control key. keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); } 

按住:Keyboard.PressModifierKeys(ModifierKeys.Control);

发布:Keyboard.ReleaseModifierKeys(ModifierKeys.Control);