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

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

Войти
Регистрация
Восстановить пароль
 
Ilot
Модератор
Эксперт С++
1811 / 1168 / 229
Регистрация: 16.05.2013
Сообщений: 3,082
Записей в блоге: 5
Завершенные тесты: 1
#1

Создание консоли из приложения - C++

25.06.2014, 10:30. Просмотров 922. Ответов 3
Метки нет (Все метки)

Необходимо создать консоль из приложения. Используем CreateConsole с параметром DETACHED_PROCESS. По идее должна распределяться консоль внутри второго потока, но этого не происходит. AlloocConsole возвращает false. Вопрос в чем может быть дело?
Первый поток:
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
#include <windows.h>
#include <iostream>
 
int main()
{
    char lpszAppName [] = "C:\\temp2.exe";
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
 
    ZeroMemory(&si, sizeof(STARTUPINFO));
    si.cb = sizeof(STARTUPINFO);
    si.lpTitle = /*"This is a new title"*/lpszAppName;
    si.dwX = 200;
    si.dwY = 200;
    si.dwXSize = 600;
    si.dwYSize = 300;
    si.dwXCountChars = 100;
    si.dwYCountChars = 100;
 
    si.dwFillAttribute = FOREGROUND_BLUE|FOREGROUND_GREEN | FOREGROUND_RED ;
 
    si.dwFlags = STARTF_USECOUNTCHARS | STARTF_USEFILLATTRIBUTE | STARTF_USEPOSITION | /*STARTF_USESHOWWINDOW |*/ STARTF_USESIZE;
    si.wShowWindow = SW_SHOWNORMAL;
 
    if(!CreateProcess(lpszAppName, NULL, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &si, &pi))     {
        std::cout << "Create new console failed\n";
        std::cin.get();
        return 0;
    }
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    return 0;
}
Второй поток:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <windows.h>
#include <iostream>
 
int main()
{
    if(!AllocConsole()) {
        MessageBox(NULL, "Console allocation failed", "Error Win32 Api", MB_OK | MB_ICONINFORMATION);
        return 0;
    }
 
    std::cout << "Hello world!" << std::endl;
    system("pause");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2014, 10:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание консоли из приложения (C++):

Создание приложения не в консоли - C++
Здравствуйте. Более менее овладел основными понятиями в c++. Все это время писал приложения в консоли. Подскажите как в c++ создавать...

Запуск приложения из консоли. Отдельным приложением - C++
Проблема такая через winexec или system или shellexecute другое открываемое приложение открывается не в другом окне, а выводит всю...

Пустое окно консоли при запуске приложения - C++
Здравствуйте!) Захожу в ОТЛАДКУ. и нажимаю &quot;Запуск без отладки&quot; и мне выбивает пустой &quot;cmd&quot; хотя в проекте все есть и на другом пк...

Создание консоли - C++
Хочу сделать командную строку на основе стандартной, вот код, но никак не пойму как заставить работать команду cd. int main() { ...

Создание консоли - C++
подскажите код: менюшка: 1. вывести на экран 2. сделать тото. 3. выйти вопрос - как это реализуется в коде? чтоб меню...

Создание таблицы в консоли - C++
условие задания программа #include&lt;iostream&gt; #include&lt;math.h&gt; #include &lt;stdio.h&gt; using namespace std; int main() ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
25.06.2014, 11:27 #2
Хз, у меня AllocConsole возвращает TRUE. Windows 7 SP1
0
Ilot
Модератор
Эксперт С++
1811 / 1168 / 229
Регистрация: 16.05.2013
Сообщений: 3,082
Записей в блоге: 5
Завершенные тесты: 1
25.06.2014, 12:03  [ТС] #3
Да, действительно и у меня вдруг все заработало. Хотя не все так просто...
Почему-то cout не выводит сообщение в новую косоль...

Добавлено через 4 минуты
Проблема решена строчкой:
C++
1
    freopen("CONOUT$", "w", stdout);
0
Vourhey
Почетный модератор
6482 / 2257 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
25.06.2014, 12:08 #4
Цитата Сообщение от Ilot Посмотреть сообщение
Почему-то cout не выводит сообщение в новую косоль...
И не должен. Потому что cout никак не связан с новой консолью и не в курсе, что она вообще есть.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2014, 12:08
Привет! Вот еще темы с ответами:

Создание файла с параметрами из консоли - C++
Вообщем это должно работать, но не работает. В принципе работы программы разобраться очень просто, поэтому не объясняю. #include...

Создание меню в консоли (не контекстное) - C++
Доброй ночи, кому вечеру и утру в Америке. Сижу на втором курсе и еще до такой темы не доходили, но в ней сейчас нужда. Ой, забыл саму...

Создание консоли для потока - C++
Вомзожно ли создать несколько консолей для одного процесса ? Хотелось бы каждому потоку выделить консоль для ввода/вывода...

Создание окна из - под консоли - C++
Здравствуйте. Нас тут озадачили в универе надеванием штанов через голову. Суть: программа выполняет там некоторые операции, в результате...


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

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

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