3

私は単体テストを書いていますが、(Control.ModifierKeys == Keys.Control)の場合、特定の関数がスタックの奥深くで呼び出されます。単体テストを実行する特定のケースにフラグなどを追加できますが、汚れすぎです!コードを使用してModifierKeysをCtrlに設定するにはどうすればよいですか?C#.Net4.0を使用しています。

4

2 に答える 2

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);
}
于 2012-05-31T18:32:59.490 に答える
0

押し続ける:Keyboard.PressModifierKeys(ModifierKeys.Control);

リリース:Keyboard.ReleaseModifierKeys(ModifierKeys.Control);

于 2013-02-26T19:37:54.567 に答える