Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.90
xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
#1

Как запретить закрытие консоли? - C++

29.12.2013, 22:01. Просмотров 5280. Ответов 21
Метки нет (Все метки)

Как запретить закрытие консоли?

Подсказали, что для этого нужно использовать функцию SetConsoleCtrlHandler(). Но у меня не получается прикрутить её к программе. Вот ссылка на её описание http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Добавлено через 7 минут
C++
1
2
3
4
BOOL WINAPI SetConsoleCtrlHandler(
  _In_opt_  PHANDLER_ROUTINE HandlerRoutine,
  _In_      BOOL Add
);
Parameters

HandlerRoutine [in, optional]
A pointer to the application-defined HandlerRoutine function to be added or removed. This parameter can be NULL.

Add [in]
If this parameter is TRUE, the handler is added; if it is FALSE, the handler is removed.
If the HandlerRoutine parameter is NULL, a TRUE value causes the calling process to ignore CTRL+C input, and a FALSE value restores normal processing of CTRL+C input. This attribute of ignoring or processing CTRL+C is inherited by child processes.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2013, 22:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как запретить закрытие консоли? (C++):

Как запретить консоли закрываться? - C++
Здравствуйте. Код: #include <iostream> #include <conio.h> using namespace std; int main() { int x;

Как убрать управляющие клавиши(закрытие, сворачивание, разворачивание) в консоли? - C++
Очень важная тема

закрытие консоли - C++
задание:Создать класс матрица Данный класс содержит указатель на float, размер строк и столбцов и состояние ошибки. Определить конструктор...

закрытие консоли - C++
в чем допущена оплошность:требуется ввести размер матрицы,вводим допустим 5,происходит вывод на экран,далее следует выбор: удалить одну...

Как запретить ввод слова "con" в консоли Visual Studio 2012 - C++
Всем добра! Написал программу для работы с символами, но есть одна проблема, что при вводе слова "con" программа ломается. Как запретить...

Принудительное закрытие консоли - C++
Доброго времени суток! У меня такой вопрос, мне нужно после выполнения определенного условия программа закрывалась, exit(0) не дает нужного...

21
-=ЮрА=-
Заблокирован
Автор FAQ
31.12.2013, 01:38 #16
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Stella, Я понял о чём написал, ты осуществлял ввод, который я не блокировал, я лишь закрыл доступ к кнопкам закрытия окна. Если хотим ещё залочить и ввод с клавиатуры то для этого нужна доплнительаня строчка кода

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <iostream>
using namespace std;
 
int main()
{
    BYTE pState;
    HWND hWnd = GetForegroundWindow();
    cout<<"Try to close me..;)"<<endl;
    EnableWindow(hWnd, false);
    GetKeyboardState(&pState);
    while( true )
    {
        Sleep(100);
        SetKeyboardState(&pState);
    }
    return 0;
}
3
Вложения
Тип файла: rar NoKillConsole2.exe.rar (22.3 Кб, 7 просмотров)
xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
03.01.2014, 21:37  [ТС] #17
Цитата Сообщение от Убежденный Посмотреть сообщение
Это кто Вам такую ерунду подсказал ?
Не поверите Обработка закрытия консоли Там автор спрашивал о том, как запретить насильственное завершение приложения. Может быть он писал именно про окна, а не про консоль. Не знаю

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
xoror, лови нубское блокирование клоуза
Хорошая вещь. Эта блокировка не только кнопки закрытия, но и всей консоли. Спасибо

Интересно, можно как-нибудь эту кнопку закрытия вообще убрать на некоторое время а потом опять показать когда надо?

Добавлено через 7 минут
Цитата Сообщение от Убежденный Посмотреть сообщение
Используя данную функцию, вы можете задать свой обработчик событий консоли, в
том числе и обработчик завершения. Но система все равно прибьет процесс, если
через какое-то время после прихода сигнала завершения он не окончит работу.
Всё понятно

Добавлено через 5 минут
Все таки этот вариант лучше
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
* * BYTE pState;
* * HWND hWnd = GetForegroundWindow();
* * cout<<"Try to close me..;)"<<endl;
* * EnableWindow(hWnd, false);
* * GetKeyboardState(&pState);
* * while( true )
* * {
* * * * Sleep(100);
* * * * SetKeyboardState(&pState);
* * }
* * return 0;
}
Консоль можно закрыть только в диспетчере задач
0
Убежденный
Ушел с форума
Эксперт С++
15697 / 7207 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
03.01.2014, 22:01 #18
Цитата Сообщение от xoror Посмотреть сообщение
Не поверите "Обработка закрытия консоли"
Читаем внимательно (из той темы):
Цитата Сообщение от nexen Посмотреть сообщение
необходимо обрабатывать события:
ctrl+C и крестик консоли, чтобы корректно завершить работу.
А теперь отсюда:
Цитата Сообщение от xoror Посмотреть сообщение
Как запретить закрытие консоли?
Подсказали, что для этого нужно использовать функцию SetConsoleCtrlHandler().
Два разных вопроса. Не находите ?
1
xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
03.01.2014, 22:15  [ТС] #19
Цитата Сообщение от Убежденный Посмотреть сообщение
Два разных вопроса. Не находите ?
Да я это уже понял. С помощью SetConsoleCtrlHandler() можно создать свой обработчик при закрытии, но программа все равно закроется, через 5 секунд или через другое время
0
IrineK
Заблокирован
03.01.2014, 22:41 #20
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ты осуществлял ввод, который я не блокировал
Можно и так:

C
1
2
3
4
5
6
7
8
9
10
11
12
#include <windows.h>
#include <iostream>
using namespace std;
 
int main()
{
    HWND hWnd = GetForegroundWindow();
    cout<<"Try to close me..;)"<<endl;
    EnableWindow(hWnd, false);
   for(;;);
    return 0;
}
2
-=ЮрА=-
Заблокирован
Автор FAQ
04.01.2014, 12:02 #21
Цитата Сообщение от IrineK Посмотреть сообщение
for(;;
- тем самым перегрузив процессор
0
IrineK
Заблокирован
04.01.2014, 18:42 #22
-=ЮрА=-,
при реализации этой шутки я закрываю окном со стра-А-А-шной картинкой весь монитор и - "усе пропало".
Следующий шаг поциента - три кнопки или обращение к опытным товарищам (которые все это и затеяли ).
Проц выдерживает )
0
04.01.2014, 18:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2014, 18:42
Привет! Вот еще темы с ответами:

Остановить закрытие консоли по завершению работы программы - C++
Работая на вижуал студие.Проблемы с getch менял на system pause,ничерта... #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;iomanip&gt; ...

Задержать закрытие окна консоли после выполнения программы - C++
Какой командой задержать экран C++ после выполнения программы, а то он сразу исчезает.

Как предотвратить закрытие окна? - C++
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;string&gt; using namespace std; int main() { char i; vector &lt;double&gt;...

Как отловить закрытие программы? - C++
Не знаю как описать проблему, поэтому просто опишу, своими словами. На форме в TMainMenu и в TTrayIcon есть кнопки &quot;закрыть&quot;. В них...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru