如何通过代码按住 Ctrl 键

本文关键字:Ctrl 何通过 代码 | 更新日期: 2023-09-27 18:36:00

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

如何通过代码按住 Ctrl 键

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