如何通过代码按住Ctrl键

时间:2012-05-31 18:18:24

标签: c# key modifier-key

我正在编写一个单元测试,如果(Control.ModifierKeys == Keys.Control),某个函数将在堆栈中深入调用..我可以为运行单元的特定情况添加一个标志或某些内容测试,但它太脏了!如何通过代码将ModifierKeys设置为Ctrl?我正在使用C#.Net 4.0。

2 个答案:

答案 0 :(得分:4)

您可以使用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);
}

答案 1 :(得分:0)

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

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