Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841

Окно DOS (cmd) в окне программы

12.03.2013, 17:24. Показов 5115. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Хотел поинтересоваться можно ли как нибудь воткнуть окно cmd в окно формы? Допустим запуская батник через свою программу, а окно доса появляется не как отдельное приложение а появляется в окне моей формы
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.03.2013, 17:24
Ответы с готовыми решениями:

Ping как скрыть окно cmd ?
Привет всем. Возможно ли скрыть появление черного окна ? system ("ping 216.58.206.174 -n 2 > test.txt");

Окно в окне
Не знаю как это реализовать. У меня есть форма как на рисунке ниже, на место красной области должны выводиться страницы, например, я...

Как правильно сделать окно в окне
Нужно чтобы окно создавалось в окне, вроде все получилось,но новое окно не активно, может что то забыл :scratch: TForm *FormZ = new TForm...

23
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
12.03.2013, 17:28
Совсем недавно подобное было про стандартный калькулятор виндовса в окне своей программы, поискать бы
0
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
12.03.2013, 17:29  [ТС]
LK, да уже искал ничего не попадается занятного...
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.03.2013, 18:28
Цитата Сообщение от LK Посмотреть сообщение
Совсем недавно подобное было про стандартный калькулятор виндовса в окне своей программы, поискать бы
В теме игрового движка для Builder кажется было....

Добавлено через 3 минуты
А вообще можно через Pipe организовывать Из консоли в Memo
2
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
21.11.2013, 17:33
Цитата Сообщение от Avazart Посмотреть сообщение
А вообще можно через Pipe организовывать
Но насколько я понял это работает тогда когда приложение Dos завершится?
А нет способа сразу же выводить окно?

Добавлено через 15 часов 0 минут
Ребята актуально, может у кого вышло вывести окно Dos в Memo?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,882
Записей в блоге: 12
21.11.2013, 18:25
А просто сменить родителя консольки на, скажем, Panel, и отменить у консольного окна WS_CAPTION, тебя чем-то не устраивает?
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
21.11.2013, 18:43
UI, а можно пример ?Что то я этими досами запутался.
На делфи перешёл там тоже самое.
У меня цель - есть программа отправлять ей нечего не нужно.
Просто посмотреть лог её работы...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,882
Записей в блоге: 12
21.11.2013, 19:47
Для "посмотреть лог" хватит и обычного пайпа, только не ждущего вывода полностью, а выдающего его в Memo по мере поступления (один доп. цикл):

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
void CaptureConsoleOutput(String ACommand, String AParameters, TMemo *AMemo)
{
    const int CReadBuffer = 256;
    char pBuffer[CReadBuffer];
 
    SECURITY_ATTRIBUTES saSecurity = {0};
    saSecurity.nLength = sizeof(saSecurity);
    saSecurity.bInheritHandle = true;
    saSecurity.lpSecurityDescriptor = 0;
 
    HANDLE hRead, hWrite;
 
    if(::CreatePipe(&hRead, &hWrite, &saSecurity, 0))
    {
        STARTUPINFO suiStartup = {0};
        PROCESS_INFORMATION piProcess;
 
        suiStartup.cb = sizeof(suiStartup);
        suiStartup.hStdInput = hRead;
        suiStartup.hStdOutput = hWrite;
        suiStartup.hStdError = hWrite;
        suiStartup.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
        suiStartup.wShowWindow = SW_HIDE;
 
        if(::CreateProcess(0, (ACommand + " " + AParameters).c_str(), &saSecurity,
            &saSecurity, true, NORMAL_PRIORITY_CLASS, 0, 0, &suiStartup, &piProcess))
        {
            DWORD dRunning, dRead;
            do
            {
                dRunning = ::WaitForSingleObject(piProcess.hProcess, 100);
                Application->ProcessMessages();
                do
                {
                    dRead = 0;
                    ::ReadFile(hRead, pBuffer, CReadBuffer, &dRead, 0);
                    pBuffer[dRead] = 0;
                    // OemToAnsi(pBuffer, pBuffer);
                    AMemo->Lines->Add(pBuffer);
                } while(dRead >= CReadBuffer);
            } while(dRunning != WAIT_TIMEOUT);
 
            ::CloseHandle(piProcess.hProcess);
            ::CloseHandle(piProcess.hThread);
        }
        ::CloseHandle(hRead);
        ::CloseHandle(hWrite);
    }
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    CaptureConsoleOutput("D:\\test\\prog_001.exe", "", Memo1);
}
3
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
21.11.2013, 20:07
UI,
У меня всё беда с этим кодам
Сразу же зависание происходит - я этт код и на делфи пробовал.
Если выводить не программу а cmd то в принципе всё хорошо.
Зависает всё, программа консольная в процессах автоматом загружает 25%, а моя программа сразу зависает.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,882
Записей в блоге: 12
21.11.2013, 22:51
Ddv122, если бы я не проверил эту функцию, я б ее, наверное, не выложил... Видео записать? Читается 5 тысяч строк вывода консольной программы, и перенаправляется в Memo...

(Builder XE2)
2
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
21.11.2013, 23:32
Еще зависит от того что запускаешь, и как ...
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
22.11.2013, 02:04
Спасибо буду искать в чём дело.
Ребята может есть у кого возможность проверить мою консольку с кодом предоставленным Уважаемым UI ?
Программа для работы с ком портом и определённым устройством.
У меня получается сразу же зависание...
Вложения
Тип файла: rar 1.rar (45.7 Кб, 35 просмотров)
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.03.2014, 02:58
Да действительно, если убрать Application->ProcessMessages(); то можно заметить что получаем мертвое подвисание.

Например при использовании

C++
1
CaptureConsoleOutput("ping","cyberforum.ru", Memo1);
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,142
Записей в блоге: 3
03.04.2017, 18:27
Доброго. в продолжении темы. Функция CaptureConsoleOutput на XP зависает. при этом на остальных ОС все в порядке.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.04.2017, 22:06
Я кстати уже давно себе написал для этих целей свой велосипед https://www.cyberforum.ru/blog... g4416.html
(Правда собираюсь его изменить переписав интерфейс классов.)
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,142
Записей в блоге: 3
03.04.2017, 23:08
Avazart, клевый проект. Неужели столько библиотек нужно для комфортной работы CMD?
На сам деле так и не сообразил, как из Вашего кода выдрать работу с CMD, в свой проект...да так что бы можно было команды выполнять фоном.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.04.2017, 23:34
Цитата Сообщение от Dinkin Посмотреть сообщение
Неужели столько библиотек нужно для комфортной работы CMD?
Нет там много разного.
А в чем проблема посмотреть что нужно вытянуть?
Смотрите папку Process.
Папки Http,Serial,Sync,Tcp можете смело удалять.

А вообще там же есть примеры, посмотрите что в соответствующем примере включено в проект

Цитата Сообщение от Dinkin Посмотреть сообщение
да так что бы можно было команды выполнять фоном.
Для того что выполнять в нужно выполнять чтение в отдельном потоке...
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,142
Записей в блоге: 3
03.04.2017, 23:38
Цитата Сообщение от Avazart Посмотреть сообщение
Смотрите папку Process.
Смотрю, только один инклуд тянет за собой другой и тд...Вам конечо как автору гораздо все понятнее =) а мне не сразу все понятно =)

Цитата Сообщение от Avazart Посмотреть сообщение
Для того что выполнять в нужно выполнять чтение в отдельном потоке
Ну ведь можно же и в одном,просто подождать ответ от cmd, ведь верно?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.04.2017, 23:43
Цитата Сообщение от Dinkin Посмотреть сообщение
Смотрю, только один инклуд тянет за собой другой и тд...Вам конечо как автору гораздо все понятнее =) а мне не сразу все понятно =)
Цитата Сообщение от Avazart Посмотреть сообщение
А вообще там же есть примеры, посмотрите что в соответствующем примере включено в проект
https://github.com/Avazart/Bic... ess.cbproj

Для Qt более читабельнее:

https://github.com/Avazart/Bic... rocess.pro

Добавлено через 1 минуту
Цитата Сообщение от Dinkin Посмотреть сообщение
Ну ведь можно же и в одном,просто подождать ответ от cmd, ведь верно?
Да повесив при этом интерфейс напрочь... или сделав его недекватным с помощью ProcessMessages();
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,142
Записей в блоге: 3
03.04.2017, 23:55
Avazart, Спасибо...пока силы есть,буду разбираться.
Миниатюры
Окно DOS (cmd) в окне программы  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.04.2017, 23:55
Помогаю со студенческими работами здесь

Как параметры в диалоговом окне передать в основное окно
Подскажите, плиз, как введеные параметры в диалоговом окне передать в основное окно. Поясню, что мне надо, на элементарном примере. ...

В процессе отладки в окне cmd при нажатии enter курсор переходит на следующую строку вместо выполнения программы
Привет! Я новичок, изучаю Си по Керниган и Ричи. Столкнулся проблемой при выполнении задания: "Напишите программу, печатающую...

Найти окно чужой программы по названию кнопки в окне
Доброго времени суток дорогие знатоки! Помогите пожалуйста с возникшей проблемой: 1. как определить окно если известно название...

Общение с DOS CMD
Здрасть! Народ, скажите пожалуйста как общатся с командной строкой. Тоесть необходимо как то связаться с вводом и выводом командной строкои...

Окно в окне или формы в окне
Доброе время суток, Хотел узнать, как можно сделать в одном окне разные формы. К примеру запускаю программу и там две кнопки выбора...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru