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

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

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

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

29.12.2013, 22:01. Просмотров 4798. Ответов 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) не дает нужного...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MicM
822 / 489 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
29.12.2013, 22:08 #2
Цитата Сообщение от xoror Посмотреть сообщение
Как запретить закрытие консоли?
Так запускайте программу из командной строки
0
xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
29.12.2013, 22:14  [ТС] #3
MicM, нет, мне не нужна командная строка. Например, эту программу дам другому пользователю, а он запустит её не через командную строку.
0
MicM
822 / 489 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
29.12.2013, 22:20 #4
system ("pause") не подойдет?
0
uhx
60 / 60 / 6
Регистрация: 11.07.2013
Сообщений: 304
29.12.2013, 22:48 #5
Цитата Сообщение от MicM Посмотреть сообщение
system ("pause") не подойдет?
Я так понял он имел ввиду вообще запретить ее закрытие, а не поставить паузу.
1
xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
30.12.2013, 10:22  [ТС] #6
Цитата Сообщение от uhx Посмотреть сообщение
Я так понял он имел ввиду вообще запретить ее закрытие, а не поставить паузу.
Это я и имею ввиду. Нужно полностью запретить закрытие консоли. Она должна сама закрыться после выполнения работы.
Если написать system("pause"); то программу все равно можно закрыть, щелкнув в правом верхнем углу на крестик.

Неужели никто не знает как это сделать?
0
alsav22
30.12.2013, 10:45
  #7

Не по теме:

Цитата Сообщение от xoror Посмотреть сообщение
Неужели никто не знает как это сделать?
К С++ это каким боком? Знаете же, где нужно спрашивать о таких вещах.

0
Timur_CF
39 / 39 / 3
Регистрация: 12.12.2013
Сообщений: 227
Записей в блоге: 1
30.12.2013, 16:13 #8
Начни отлавливать сообщения WM_QUIT в адрес окна командной строки. Обрабатывай их без процедуры PostQuitMessage(). Только для этого тебе нужно будет самому обрабатывать сообщения от её окна. А это сложнее, но можно.
0
xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
30.12.2013, 16:25  [ТС] #9
Цитата Сообщение от Timur_CF Посмотреть сообщение
Начни отлавливать сообщения WM_QUIT
Разве от консоли можно отлавливать сообщения?! Я даже и не представляю как это все можно сделать. Одно дело окно, но а в консоле ...

Добавлено через 1 минуту
Функция SetConsoleCtrlHandler. Что она вообще делает? Я так понимаю что через нее можно предотвратить закрытие консоли. Но как?!
0
Timur_CF
39 / 39 / 3
Регистрация: 12.12.2013
Сообщений: 227
Записей в блоге: 1
30.12.2013, 16:37 #10
Выставь ловушку на сообщения WM_QUIT.
Консоль такое же окно, как и все остальные, просто выглядит оно так...
Даже кнопке "Пуск" можно сообщения отсылать при желании.
Так вот, запускаешь ловушку (HHOOK) во второй поток консольного приложения.
Ловишь сообщение в адрес своего окна (консоли) - обработаешь - не закрывается.

Добавлено через 1 минуту
Или можешь просто спрятать её окно и при необходимости сам закрывать (программно).

Добавлено через 14 секунд
Последнее делается проще всего и без запарки.
1
Убежденный
Системный программист
Эксперт С++
15550 / 7058 / 1114
Регистрация: 02.05.2013
Сообщений: 11,468
Завершенные тесты: 1
30.12.2013, 18:38 #11
Цитата Сообщение от xoror Посмотреть сообщение
Как запретить закрытие консоли?
Подсказали, что для этого нужно использовать функцию SetConsoleCtrlHandler().
Это кто Вам такую ерунду подсказал ?
Используя данную функцию, вы можете задать свой обработчик событий консоли, в
том числе и обработчик завершения. Но система все равно прибьет процесс, если
через какое-то время после прихода сигнала завершения он не окончит работу.

Цитата Сообщение от xoror Посмотреть сообщение
Неужели никто не знает как это сделать?
Я знаю, но оно того не стоит, поверьте.
1
Паскалька
10 / 10 / 1
Регистрация: 10.09.2013
Сообщений: 136
Записей в блоге: 1
30.12.2013, 20:41 #12
C++
1
2
3
4
#include <conio.h>
//-------
getch();
return 0;
Добавлено через 2 минуты
Цитата Сообщение от Паскалька Посмотреть сообщение
C++
1
2
3
4
#include <conio.h>
//-------
getch();
return 0;
ой не то)))
0
-=ЮрА=-
Заблокирован
Автор FAQ
30.12.2013, 21:10 #13
xoror, лови нубское блокирование клоуза, закрыть окно простыми средствами не открыв диспетчер задач либо не применив програмный Enable невозможно.

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);
    cin.get();
    return 0;
}
2
Миниатюры
Как запретить закрытие консоли?  
Вложения
Тип файла: rar NoKillConsole.rar (1.6 Кб, 12 просмотров)
Тип файла: rar NoKillConsole.exe.rar (36.1 Кб, 9 просмотров)
Stella
75 / 75 / 5
Регистрация: 26.02.2013
Сообщений: 224
30.12.2013, 23:00 #14
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
закрыть окно простыми средствами не открыв диспетчер задач либо не применив програмный Enable невозможно.
а почему у меня закрывается если любую кнопку нажать?
0
-=ЮрА=-
Заблокирован
Автор FAQ
31.12.2013, 01:10 #15
Цитата Сообщение от Stella Посмотреть сообщение
а почему у меня закрывается если любую кнопку нажать?
- предположу не отработало
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
EnableWindow(hWnd, false);
также предположу что тест проводился на 8-ке. Интересно взглянуть на видео закрытия и да хотелось бы услышать параметры ОСи
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2013, 01:10
Привет! Вот еще темы с ответами:

Остановить закрытие консоли по завершению работы программы - 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;. В них...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.12.2013, 01:10
Ответ Создать тему
Опции темы

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