private bool nonKeysEntered = false;
public void MyKeyUp(object sender, KeyEventArgs e)
{
nonKeysEntered = false;
if (e.KeyCode == Keys.Space)
{
KeyboardSend.KeyDown(Keys.ControlKey);
KeyboardSend.KeyDown(Keys.S);
nonKeysEntered = true;
}
}
public void MyKeyPress(object sender, KeyPressEventArgs e)
{
if (nonKeysEntered) e.Handled = true;
}
static class KeyboardSend
{
[DllImport("user32.dll")]
private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
private const int KEYEVENTF_EXTENDEDKEY = 1;
private const int KEYEVENTF_KEYUP = 2;
public static void KeyDown(Keys vKey)
{
keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY, 0);
}
public static void KeyUp(Keys vKey)
{
keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
}
Открываю блокнот, нажимаю клавишу пробел, срабатывает комбинация ctrl+s и после этого, такое ощущение, будто эти клавиши нажаты остаются навсегда (скролю в браузере - происходит увеличение/уменьшение страницы и т.д)
Помогите, пожалуйста, понять, в чем ошибка? В данный момент остановился на коде выше.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей