Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/170: Рейтинг темы: голосов - 170, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 27.02.2012
Сообщений: 5

Аналог функции getch() в С#

09.09.2006, 15:42. Показов 31899. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста. Есть ли в Си Шарп функция аналог getch() в Си для предложения в консоли нажатиялюбой клавиши, чтобы видеть результаты выполнения программы?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2006, 15:42
Ответы с готовыми решениями:

Аналог функции getch()
Подскажите пожалуйста, аналог функции getch() (из файла "conio.h"), но чтобы она соответствовала стандарту C++. getchar() и объект...

Аналог getch или русские буквы в getch
Здравствуйте, уважаемые господа. Существуют ли какие-нибудь аналоги getch () и _getch, которые не требуют ввода какого-либо другого...

Нужен аналог функции getch() для Unix
Сталкнулся с такой проблемой не могу найти аналог функции getch для линукс мне просто нужно чтобы я мог вводить любой символ без нажатия...

11
Администратор
 Аватар для mik-a-el
87809 / 53130 / 249
Регистрация: 10.04.2006
Сообщений: 13,760
09.09.2006, 20:53
Console.Read();
0
4 / 4 / 1
Регистрация: 05.06.2011
Сообщений: 15
05.05.2007, 13:18
Цитата Сообщение от mik-a-el Посмотреть сообщение
Console.Read();
К сожалению, это не аналог. Это хрень. В том смысле хрень, что Console.Read() ждет нажатия Enter, а getch() реагирует сразу же на любую нажатую клавишу.

Так что вопрос об аналоге остается открытым! Ести ли такой аналог вообще???
0
Администратор
 Аватар для mik-a-el
87809 / 53130 / 249
Регистрация: 10.04.2006
Сообщений: 13,760
07.05.2007, 10:07
Цитата Сообщение от VladislaV
Ести ли такой аналог вообще???
Console.ReadKey();
0
4 / 4 / 1
Регистрация: 14.07.2008
Сообщений: 39
17.12.2008, 10:28
Цитата Сообщение от mik-a-el Посмотреть сообщение
Console.ReadKey();
У меня возник подобный вопрос и хотелось бы уточнить один момент. Дело в том, что Console.ReadKey(); возвращает информацию о нажатой клавише и при этом ОТОБРАЖАЕТ ее на экране. В то время, как getch(); НЕ ОТОБРАЖАЕТ. Следовательно вопрос все еще открыт.
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
17.12.2008, 12:24
Попробуй после чтения вывести символ BackSpace
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
17.12.2008, 14:57
Лучший ответ Сообщение было отмечено как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
 
namespace ConsoleApplication1
{
    class Program
    {
        [DllImport("msvcrt")]
        static extern int _getch();
 
        static void Main(string[] args)
        {
            Console.WriteLine("Hello world");
            Console.WriteLine("Press any key to end..");
            _getch();
        }
    }
}
Добавлено через 2 часа 19 минут 23 секунды
Code
1
Console.ReadKey(true);
3
4 / 4 / 1
Регистрация: 14.07.2008
Сообщений: 39
21.12.2008, 16:56
Спасибо.
0
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
23.10.2010, 16:11
MAcK,

объясни плз, что и как!
понял что для работы _getch();

C#
1
using System.Runtime.InteropServices;
.
.
.

C#
1
2
[DllImport("msvcrt")]
static extern int _getch();
0
burning1ife
 Аватар для kenny69
1466 / 1287 / 294
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
23.10.2010, 16:18
просто используй
C#
1
Console.ReadKey(true)
эффект будет такой же как и у getch()
1
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
23.10.2010, 18:46
kenny69

посмотри плз!
эффект передвижения стрелочки!
ошибок нет, а не работает

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
 
namespace ConsoleApplication3
{
    class Program
    {
        /*
        #region не совсем втыкнул что это, зато работает _getch() =)
 
        [DllImport("msvcrt")]
        static extern int _getch();
 
        #endregion
       */
 
        static void Main(string[] args)
        {
            Console.CursorVisible = false; // убираем мусор;
            #region Меню
            
           // int m1;
        look:
 
            Console.Clear();
            Console.WriteLine("\t   Меню   \n");
            Console.WriteLine(" ->  Начать игру ");
            Console.WriteLine("    Настройки");
            Console.WriteLine("    Статистика");
            Console.WriteLine("    О программе");
            Console.WriteLine("    Выход");
 
            int p = 1;
            //m1 = _getch();
            ConsoleKey key = Console.ReadKey().Key;
            do
            {
                if (key == ConsoleKey.DownArrow)
                    p++;
                if (key == ConsoleKey.UpArrow)
                    p--;
 
// два цикло чтобы ходить по кругу
                do
                {
                    if (p <= 0)
                        p = p + 5;
                } while (p <= 0);
 
                do
                {
                    if (p >= 6)
                        p = p - 5;
                } while (p >= 6);
 
                if (p == 1)
                {
                    Console.Clear();
                    Console.WriteLine("\t   Меню   \n");
                    Console.WriteLine(" ->  Начать игру ");
                    Console.WriteLine("    Настройки");
                    Console.WriteLine("    Статистика");
                    Console.WriteLine("    О программе");
                    Console.WriteLine("    Выход");
 
                    if (key == ConsoleKey.Enter)
                    {
                        Console.Clear();
                        Console.WriteLine("бла-бла:\n");
                        goto look;
                    }
                }
                if (p == 2)
                {
                    Console.Clear();
                    Console.WriteLine("\t   Меню   \n");
                    Console.WriteLine("    Начать игру ");
                    Console.WriteLine(" ->  Настройки");
                    Console.WriteLine("    Статистика");
                    Console.WriteLine("    О программе");
                    Console.WriteLine("    Выход");
                    //m1 = _getch();
 
                    if (key == ConsoleKey.Enter)
                    {
                        Console.Clear();
                        Console.WriteLine("\tИнформация о предприятиях\n\n");
                        Console.WriteLine("==========================================");
                        
                       // m1 = _getch();
                        if (key == ConsoleKey.Backspace)
                        {
                            goto look;
                        }
                    }
                }
                if (p == 3)
                {
                    Console.Clear();
                    Console.WriteLine("\t   Меню   \n");
                    Console.WriteLine("    Начать игру ");
                    Console.WriteLine("    Настройки");
                    Console.WriteLine(" ->  Статистика");
                    Console.WriteLine("    О программе");
                    Console.WriteLine("    Выход");
                   // m1 = _getch();
                    if (key == ConsoleKey.Enter)
                    {
                        Console.Clear();
                        Console.WriteLine("\tИнформация о доходах\n\n");
                       
                        //m1 = _getch();
                        if (key == ConsoleKey.Backspace)
                        {
                            goto look;
                        }
                    }
                }
                if (p == 4)
                {
                    Console.Clear();
                    Console.WriteLine("\t   Меню   \n");
                    Console.WriteLine("    Начать игру ");
                    Console.WriteLine("    Настройки");
                    Console.WriteLine("    Статистика");
                    Console.WriteLine(" ->  О программе");
                    Console.WriteLine("    Выход");
                    //m1 = _getch();
                    if (key == ConsoleKey.Enter)
                    {
                        Console.Clear();
                        Console.SetCursorPosition(16, 10);
                        Console.WriteLine("\tNO_NAME, Версия 1.0\n\n");
                        Console.SetCursorPosition(26, 11);
                        Console.WriteLine("ZaVyLoN, 2010");
                       // m1 = _getch();
                        if (key == ConsoleKey.Backspace)
                        {
                            goto look;
                        }
                    }
                }
                if (p == 5)
                {
                    Console.Clear();
                    Console.WriteLine("\t   Меню   \n");
                    Console.WriteLine("    Начать игру ");
                    Console.WriteLine("    Настройки");
                    Console.WriteLine("    Статистика");
                    Console.WriteLine("    О программе");
                    Console.WriteLine(" ->  Выход");
                   // m1 = _getch();
                    if (key ==  Console.ReadKey().Key)
                    {
                        break;
                    }
                }
            } while (key != ConsoleKey.Escape);
            #endregion
        }
           
    }
}
0
burning1ife
 Аватар для kenny69
1466 / 1287 / 294
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
23.10.2010, 19:03
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
class Program
    {
        /*
        #region не совсем втыкнул что это, зато работает _getch() =)
 
        [DllImport("msvcrt")]
        static extern int _getch();
 
        #endregion
       */
 
        static void Main(string[] args)
        {
            Console.CursorVisible = false; // убираем мусор;
            #region Меню
 
        // int m1;
        look:
 
            Console.Clear();
            Console.WriteLine("\t   Меню   \n");
            Console.WriteLine(" ->  Начать игру ");
            Console.WriteLine("    Настройки");
            Console.WriteLine("    Статистика");
            Console.WriteLine("    О программе");
            Console.WriteLine("    Выход");
 
            int p = 1;
            //m1 = _getch();
            ConsoleKey key;
            do
            {
                key = Console.ReadKey().Key;
                if (key == ConsoleKey.DownArrow)
                    p++;
                if (key == ConsoleKey.UpArrow)
                    p--;
 
                if (p > 5) p = 1;
                if (p < 1) p = 5;
                if (p == 1)
                {
                    Console.Clear();
                    Console.WriteLine("\t   Меню   \n");
                    Console.WriteLine(" ->  Начать игру ");
                    Console.WriteLine("    Настройки");
                    Console.WriteLine("    Статистика");
                    Console.WriteLine("    О программе");
                    Console.WriteLine("    Выход");
 
                    if (key == ConsoleKey.Enter)
                    {
                        Console.Clear();
                        Console.WriteLine("бла-бла:\n");
                        //goto look;
                    }
                }
                if (p == 2)
                {
                    Console.Clear();
                    Console.WriteLine("\t   Меню   \n");
                    Console.WriteLine("    Начать игру ");
                    Console.WriteLine(" ->  Настройки");
                    Console.WriteLine("    Статистика");
                    Console.WriteLine("    О программе");
                    Console.WriteLine("    Выход");
                    //m1 = _getch();
 
                    if (key == ConsoleKey.Enter)
                    {
                        Console.Clear();
                        Console.WriteLine("\tИнформация о предприятиях\n\n");
                        Console.WriteLine("==========================================");
 
                        // m1 = _getch();
                        if (key == ConsoleKey.Backspace)
                        {
                            goto look;
                        }
                    }
                }
                if (p == 3)
                {
                    Console.Clear();
                    Console.WriteLine("\t   Меню   \n");
                    Console.WriteLine("    Начать игру ");
                    Console.WriteLine("    Настройки");
                    Console.WriteLine(" ->  Статистика");
                    Console.WriteLine("    О программе");
                    Console.WriteLine("    Выход");
                    // m1 = _getch();
                    if (key == ConsoleKey.Enter)
                    {
                        Console.Clear();
                        Console.WriteLine("\tИнформация о доходах\n\n");
 
                        //m1 = _getch();
                        if (key == ConsoleKey.Backspace)
                        {
                            goto look;
                        }
                    }
                }
                if (p == 4)
                {
                    Console.Clear();
                    Console.WriteLine("\t   Меню   \n");
                    Console.WriteLine("    Начать игру ");
                    Console.WriteLine("    Настройки");
                    Console.WriteLine("    Статистика");
                    Console.WriteLine(" ->  О программе");
                    Console.WriteLine("    Выход");
                    //m1 = _getch();
                    if (key == ConsoleKey.Enter)
                    {
                        Console.Clear();
                        Console.SetCursorPosition(16, 10);
                        Console.WriteLine("\tNO_NAME, Версия 1.0\n\n");
                        Console.SetCursorPosition(26, 11);
                        Console.WriteLine("ZaVyLoN, 2010");
                        // m1 = _getch();
                        if (key == ConsoleKey.Backspace)
                        {
                            goto look;
                        }
                    }
                }
                if (p == 5)
                {
                    Console.Clear();
                    Console.WriteLine("\t   Меню   \n");
                    Console.WriteLine("    Начать игру ");
                    Console.WriteLine("    Настройки");
                    Console.WriteLine("    Статистика");
                    Console.WriteLine("    О программе");
                    Console.WriteLine(" ->  Выход");
                    // m1 = _getch();
                    if (key == ConsoleKey.Enter)
                    {
                        break;
                    }
                }
            } while (key != ConsoleKey.Escape);
            #endregion
        }
 
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.10.2010, 19:03
Помогаю со студенческими работами здесь

аналог getch()
Ребят getch меня не устраивает следующим: когда окно теряет фокус он не работает. как выйти из ситуации?

Аналог getch()
Подскажите пожалуйста, есть ли аналог getch() (C++) в Ruby? Просто необходимо без Enter считать код клавиши:)

Аналог getch () в си/си++
В Си(консольном) есть функция getch (), возвращающая нажатую клавишу. Есть ли аналог такой функции в Паскале?

Аналог getch() из стандарта C++
Есть ли возможность заменить getch() только средствами стандартной библиотеки? Прислали тестовое задание, где нужно сделать игру в консоли,...

Вычислить значение функции. Исполльзовать getch()
Тема: вычисление последовательностей. Пожалуйста весь код с функцией getch. Буду очень признателен


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru