Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: получить из консоли  (Прочитано 8026 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Mfcer__
Команда клуба

ru
Offline Offline

« : 13-09-2004 21:58 » 

Задачка:
есть консольная программа, которая что то выводит на экран, какие символы, строки и прочее. Эта программа не моя, исходников нет, только exe'шник.

есть другое windows приложение, мое,  из которого необходимо получить те данные которые выводит на экран dos программа.

Какие варианты возможны это реализовать?
Записан
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #1 : 14-09-2004 04:32 » 

Создаешь в своей проге консоль и запускаешь в этой консоли exeшник и считываешь что хочешь
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
stragner
Гость
« Ответ #2 : 14-09-2004 04:33 » new

Mfcer__, можно попробывать сделать так:
когда ты вызываешь программу перенаправь вывод в файл, например
в консоле вводишь: имя_программы > имя_файла_куда_данные_будут записаны_вместо_вывода_на_экран
После делай что хочешь с этим файлом
Записан
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #3 : 14-09-2004 04:53 » 

Я делал так:
Создаешь консоль AllocConsole
Запускаешь в ней свою программу
Получаешь буфер вывода GetStdHandle
Читаешь из него через ReadFile
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Mfcer__
Команда клуба

ru
Offline Offline

« Ответ #4 : 14-09-2004 22:12 » 

а что tсли программа на каком то этапе работы попросит ввести какие то данные (число, строку ...)
в смысле вызовет функции
Код:
scanf();
gets();
cin >> ... ;
« Последнее редактирование: 01-12-2007 14:25 от Алексей1153++ » Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #5 : 14-09-2004 23:43 » 

Mfcer__, думаю базируясь на том что сказал USBLexus можно прийти к выводу, что стемже успехом можно писать в буфер стандартного ввода. Улыбаюсь
Не знаю как в виндах а в линуксе можно подминить стандартные IO потоки запускаемой программы и работать с ними как с файловыми дискрипторами или потоками кому как нравится обзывается это дело PIPE для моманд windows это выгдят примерно так
Код:
 dir|more 
только в этом случае PIPE создаёт интерпритатор командной строки.
Записан

Странно всё это....
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #6 : 15-09-2004 02:25 » 

Цитата: Mfcer__
а что tсли программа на каком то этапе работы попросит ввести какие то данные (число, строку ...)
в смысле вызовет функции
Код:
scanf();
gets();
cin >> ... ;
HANDLE inHandle = GetStdHandle(STD_INPUT_HANDLE);
WriteFile(....)
« Последнее редактирование: 01-12-2007 14:26 от Алексей1153++ » Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines