Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для popelyuk
8 / 8 / 2
Регистрация: 04.12.2012
Сообщений: 130

Как заставить новый поток писать в консоль?

02.02.2013, 21:04. Показов 1072. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть оконная прога она запускает поток:
C++
1
2
3
4
5
6
7
8
9
10
11
12
DWORD WINAPI ConsoleThread(PVOID) {
    wchar_t *some_string=L"New thread!"; const wchar_t *some_string2=L"some text inside console";
    AllocConsole(); SetConsoleTitleW(some_string);
    HANDLE conHandle=GetStdHandle(STD_OUTPUT_HANDLE);
    if(conHandle==NULL) MessageBox(GetConsoleWindow(), L"cannot get std handle to output", L"error", MB_OK);
    if(conHandle==INVALID_HANDLE_VALUE) MessageBox(GetConsoleWindow(), L"conHandle get invalid handle", L"error", MB_OK);
    seeLastErorr(); // the operation comlited succesfully
 
    WriteConsole(conHandle,some_string2,cml::getStrLen(some_string2), NULL, NULL);
    seeLastErorr(); //  the handle is invalid
    return 0;
}
но он ничего не пишет, что выдает функция GetLastError написано в коментах, что здесь не правильно подскажите пожалуйста. Что нужно передать функции WriteConsole в качестве хендела что бы её это удовлетворило, а то я что не сую она пишет: the handle is invalid
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.02.2013, 21:04
Ответы с готовыми решениями:

Как заставить консоль писать кириллицей?
Если в оператор printf вписывать русские буквы, консоль выдает полную чухню. Что надо сделать дабы это избежать?

Как заставить JComboBox писать по-русски?
Прошу помочь. Хотелось бы в календаре видеть список месяцев на русском: final String months = new String ; int j; ...

Как заставить Y писать нужный снипет
Доброго всем! Пжл, помогите с проблемой, очень нужно заставить Яшу писать нужный мне снипет. Description не помогает, возможно не...

7
208 / 45 / 13
Регистрация: 06.09.2010
Сообщений: 99
03.02.2013, 14:27
Не пойму где в этом случае может возникнуть ошибка, но мысль одна гаденькая есть. Попробуйте вместо GetStdHandle использовать CreateConsoleScreenBuffer.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
03.02.2013, 16:12
Цитата Сообщение от popelyuk Посмотреть сообщение
но он ничего не пишет, что выдает функция GetLastError написано в коментах
Очень интересно:
Миниатюры
Как заставить новый поток писать в консоль?  
0
 Аватар для popelyuk
8 / 8 / 2
Регистрация: 04.12.2012
Сообщений: 130
03.02.2013, 16:30  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Очень интересно:
да уж, что же у меня не так тогда??

Добавлено через 11 минут
У Вас же MinGW тоже? А какая версия?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
03.02.2013, 17:55
У меня TDM-GCC (version 4.7.1, 32 bit).
0
 Аватар для popelyuk
8 / 8 / 2
Регистрация: 04.12.2012
Сообщений: 130
03.02.2013, 18:48  [ТС]
Вот такие извращения помогли решить проблему (спасибо mms_ua)
C++
1
2
3
4
5
6
7
8
9
10
DWORD WINAPI ConsoleThread(PVOID) {
    wchar_t *some_string=L"New thread!"; const wchar_t *some_string2=L"some text inside console";
    AllocConsole(); SetConsoleTitleW(some_string);
    HANDLE conHandle=CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, NULL, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
    SetConsoleActiveScreenBuffer(conHandle2);
    DWORD dwResult; COORD Coord; Coord.X=1; Coord.Y=1;
    SetConsoleCursorPosition(conHandle, Coord);
    WriteConsole(conHandle,some_string2,cml::getStrLen(some_string2), &dwResult, NULL);
    return 0;
}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
04.02.2013, 00:14
Во-первых, что такое conHandle2? Опечатка? А во-вторых, у тебя утечка. CloseHandle где?
0
 Аватар для popelyuk
8 / 8 / 2
Регистрация: 04.12.2012
Сообщений: 130
04.02.2013, 00:20  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Во-первых, что такое conHandle2? Опечатка? А во-вторых, у тебя утечка. CloseHandle где?
Я из редактора скопировал, там куча коментировоного кода было было, я его тут поудалял чтобы почище было, ну и так получилось что не всё допререименовл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2013, 00:20
Помогаю со студенческими работами здесь

Как заставить поток ждать
Есть программа, в которую пользователь может залогиниться, за залогинивание отвечает отдельный поток, который обращается к серверу и...

Как заставить поток ожидать любого события?
Делаю класс по гайду с msdn вот. Но немного переделал, так что бы было похоже на BackgroundWorker. По факту есть события: public...

Как заставить поток ждать в некоторых ситуациях
Есть такой сценарий приложения: Приложение до запуска TCP кеширует данные из MySQL в std::vector, далее запускается TCP и ожидаются...

Как заставить консоль выводить кириллицу
Здравствуйте. Есть такой код: .386 .model flat, stdcall option casemap:none ExitProcess proto :dword GetStdHandle proto :dword ...

TMemoryStream & Struct, как читать/писать структуры из/в поток?
на ++ пытаюсь перейти недавно... на С, задача была тривиальной и решена давно, но по обстоятельствам нужно перенести на С++. на...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru