powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
12 сообщений из 12, страница 1 из 1
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38133470
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#?
чтоб при нажатии на крестик, сначала у меня выводилось сообщение - Console.WRiteLine("ВЫход из сервера"); и тольео потом закрывалось приложение.
Спасибо всем.
...
Рейтинг: 0 / 0
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38133646
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_Stubborn,

Зависит от того какая у тебя кнопка крестика х,Х,Χ,┼,‡,ﭏ?

http://stackoverflow.com/questions/1119841/net-console-application-exit-event
...
Рейтинг: 0 / 0
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38133706
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron,

Когда нажимаю кнопку самого консоля, крестик в правом верхнем углу
...
Рейтинг: 0 / 0
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38133762
ZVER-10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_Stubborn,
11132277
...
Рейтинг: 0 / 0
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38133774
ZVER-10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVER-10,
вот еще
...
Рейтинг: 0 / 0
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38133815
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVER-10,

Дя первого варианта, как я понимаю нужно в деструкторе сделать те операции, по которым мне нужно, например сохранить в текстовый действие закрытия приложения. ТАк? Я прав?
...
Рейтинг: 0 / 0
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38133917
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_Stubborn,

Нужно учитывать, что обработчики событий консоли живут в другом потоке
и при закрытии консоли процессу для аккуратного завершения даётся очень немного времени

Кроме CTRL_CLOSE_EVENT нужно обработать CTRL_LOGOFF_EVENT и CTRL_SHUTDOWN_EVENT

Ctrl-C и Cntrl-Break лучше обрабатывать в честном фреймворковском Console.CancelKeyPress
...
Рейтинг: 0 / 0
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38134044
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовал второй метод, но он не работает у меня. Какого типа должен быть HandleConsoleError?
Первый вариант не могу использовать, потому что объектов класса я не создаю, почти все реализовано в void main()
...
Рейтинг: 0 / 0
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38134050
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По умолчанию, сам visual studio установил его вот так
public static SignalHandler HandleConsoleError { get; set; }
Это правильно?
...
Рейтинг: 0 / 0
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38134098
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_Stubborn,

ну где-то так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;

namespace ConsoleApplication3
{
    class Program
    {
        public delegate bool HandlerRoutine(CtrlTypes CtrlType);
        public enum CtrlTypes
        {
            CTRL_C_EVENT = 0,
            CTRL_BREAK_EVENT =1,
            CTRL_CLOSE_EVENT =2,
            CTRL_LOGOFF_EVENT = 5,
            CTRL_SHUTDOWN_EVENT =6
        }

        [DllImport("Kernel32", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool SetConsoleCtrlHandler(
            [In]
            [Optional]
            [MarshalAs(UnmanagedType.FunctionPtr)]
            HandlerRoutine Handler,
            [In]
            [MarshalAs(UnmanagedType.Bool)]
            bool Add
          );


        private static bool ConsoleCtrlCheck(CtrlTypes ctrlType)
        {
            switch (ctrlType)
            {
                case CtrlTypes.CTRL_C_EVENT:
                case CtrlTypes.CTRL_BREAK_EVENT:
                    return false;
                case CtrlTypes.CTRL_CLOSE_EVENT:
                case CtrlTypes.CTRL_LOGOFF_EVENT:
                case CtrlTypes.CTRL_SHUTDOWN_EVENT:
                    onClose(ctrlType);
                    return true;
                default:
                    return false;
            }
        }

        private static void onClose(CtrlTypes ctrlType)
        {
            Console.WriteLine("CLOSE: {0}", ctrlType);
        }

        static void Main(string[] args)
        {
            Console.WriteLine("START.");
            Console.CancelKeyPress +=  Console_CancelKeyPress;
            SetConsoleCtrlHandler(ConsoleCtrlCheck, true);
            while (true)
                Thread.Sleep(100);
        }

        static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
        {
            e.Cancel = true;
            Console.WriteLine("SIGNAL: {0}", e.SpecialKey);
        }
    }
}

...
Рейтинг: 0 / 0
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38135711
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
Спасибо.
...
Рейтинг: 0 / 0
Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
    #38135713
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем, ребята.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как обработать событие нажатия на кнопку крестика в консольном приложении на C#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]