Блокировка сочетания клавиш "ALT+F4"

Чтобы код заработал, выставьте значение True в параметре KeyPreview формы у которой отключаете сочетании клавиш.
Вот и реализация данной задумки.
1) Вы проверяете все сочетания клавиш в форме, если наше сочетание обнаружено то altF4 выставляем в true.
2) При закрытии проверяем altF4,было ли сочетание клавиш. после чего вызываем отмену всех действий с помощью "e.Cancel = true;".

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (altF4)
    {
        if (e.CloseReason == CloseReason.UserClosing)
            e.Cancel = true;
        altF4 = false;
    }  
}

private bool altF4 = false;

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Alt && e.KeyCode == Keys.F4)
    {
        MessageBox.Show("");
        altF4 = true;
    }
}

Исходник скачиваем тут: http://csharpcoderr.rusfolder.net/files/38306689


1 комментарий:

  1. Если сильно необходимо сделать так, чтобы данное сочетание ALT+F4 не работало временно, то можно сделать следующим образом.

    1) Устанавливаем программу Active Keyboard (она конечно старая но не думаю что будут проблемы с поиском).
    2) Когда заходим в программу нажимаем клавишу "Макрос", откроется окно "Новый макрос";
    3) После задаём нужные параметры, в пункте "Тип команды" выбираем "Управление окнами", далее в нижнем пункте "Команда" выбираем "Свернуть окно" или любую подходящую вам, после в пункте "Выбор горячих кнопок" выбираем левой клавишей мыши "левый ALT и F4 получается так (ALT+F4)";
    4) После того как мы задали основные параметры появится сообщение рядом с клавишей "OK", "Внимание: системная комбинация" игнорируем сообщение и нажимаем "ОК" и после наш макрос готов, можете пробовать.

    Обычно при включоной программе и после того как мы назначили макрос, клавиши "ALT+F4" вообще не будут реагировать, если отключить программу всё вернётся на круги своя. Вот и всё, пользуйтесь на здоровье)
    Если что прилагается картинка с таким же описанием действий.

    ОтветитьУдалить

Большая просьба, не писать в комментариях всякую ерунду не по теме!