Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 29.04.2017
Сообщений: 1

ReadConsoleInput читает только первый символ после Enter

29.04.2017, 01:36. Показов 1634. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я пишу один проект по с++ RemoteConsole. Программа соединяется по QTcpSocket и работает с функциями ReadConsoleInput, WriteConsoleInput, ReadConsoleOutput и WriteConsoleOutput. С функцией ReadConsoleInput возникли проблемы она считает только первый символ после нажатия Enter. если нужно ввести второй символ то нужно нажать снова Enter и после этого можно будет считать снова один единственный символ, все другие будут игнорироваться. Помогите решить эту проблему... Заранее спасибо
Код конструктора:
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
FreeConsole();
 
    dwProcessId = 0 ;
    dwErrorId = 0;
    std::wstring path = L"cmd.exe";
 
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
 
    ZeroMemory(&si, sizeof(si));
    ZeroMemory(&pi, sizeof(pi));
 
    si.cb = sizeof(si);
 
    SECURITY_ATTRIBUTES security = {
       sizeof(security), NULL, TRUE
     };
 
    if(CreateProcess(NULL, (LPWSTR)path.c_str(), NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi))
    {
        dwProcessId = pi.dwProcessId;
    }
    else
    {
        dwErrorId = GetLastError();
        printf("CreateProcess failed (%d).\n", dwErrorId);
        return;
    }
 
    Sleep(1000);
 
    if(!AttachConsole(pi.dwProcessId))
    {
        dwErrorId = GetLastError();
        printf( "AttachConsole failed (%d).\n", dwErrorId);
        return;
    }
Код метода в котором проблема:
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
int Console::readInputFromConsole(DataIn& data)
{
    data.inputRecords.resize(40);
 
    HANDLE inputHandle = GetStdHandle(STD_INPUT_HANDLE);
    DWORD events = 0;
    DWORD unread = 0;
 
    DWORD fdwMode = ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT;
    fdwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
 
//    DWORD  fdwMode = ENABLE_EXTENDED_FLAGS | ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT |  ENABLE_VIRTUAL_TERMINAL_PROCESSING;
    BOOL bMode = SetConsoleMode(inputHandle, fdwMode);
    if(!bMode)
    {
        std::runtime_error("error with mode");
    }
 
        Sleep(20);
        BOOL statusUnread = TRUE;
        statusUnread = GetNumberOfConsoleInputEvents(inputHandle, &unread);
        if(!statusUnread)
            throw std::runtime_error("GetNumberOfConsoleInputEvents failed.");
 
        data.inputRecords.resize(unread);
 
            BOOL statusRead = TRUE;
            statusRead = ReadConsoleInput(inputHandle, &data.inputRecords[0], unread, &events);
            if(!statusRead)
                throw std::runtime_error("ReadConsoleInput failed.");
 
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &data.consoleScreenBufferInfo);
 
    return 0;
}
Во вложениях класс
remoteprotocol.zip
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.04.2017, 01:36
Ответы с готовыми решениями:

После INSERT в datagridview выводится только первый символ
Добрый день! Помогите, пожалуйста, найти ошибку. Есть главная форма и есть форма для добавления записи в БД, в таблицу. Вывод...

Console.ReadLine() не читает первый символ
Консолька читает первый символ только если нажать backspace, перемещения курсора (Console.SetCursorPosition(Console.CursorLeft+2,...

getline не читает первый символ строки
у меня в программе считывается строка при помощи getline(cin,str), но первый символ не считывается. Можно ли как-то это исправить? полный...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2017, 01:36
Помогаю со студенческими работами здесь

После загрузки биоса Windows грузится только после нажатия enter + f4
Люди, что это может быть если после загрузки биоса винда грузится только после нажатия enter + f4? Как с этим бороться ?

Выводится только первый символ строки
Имеется код: #include <iostream> using namespace std; int main() { string k, s = "4,65"; int i; for (i = 0, k...

Считывается только первый символ char
Всем привет! При введении данных с клавиатуры записывается только первый символ, а дальше программа пропускает дальнейшие действия....

Проверяет только первый символ (for, множество)
При проходе цикла проверяет только первый цикл for i := 1 to length(Edit1.Text) do if not(Edit1.Text...

Отображает только первый символ в слове
Появилась проблема,отображает только первый (нулевой) символ в слове. Есть панель смайлов,которая берется из БД и в таблицу пишется...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru