Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.20;
Скачать: CL | DM;

Вниз

Как взять текст из ДОС-окна   Найти похожие ветки 

 
Anikul   (2003-08-11 22:22) [0]

Ребята, такая вот проблема. Есть ДОС-приложение (не моё), я его запустил своей программой, и передал ей параметры (сэмулировал клавиатуру), как мне из этого окна считать экран с определённых знакомест (пару строчек, например)... Надо выдернуть оттуда текстовые строки в определённом месте окна ДОС-программы... Хэндл окна есть...
P.S. у меня Win2k...


 
nikkie ©   (2003-08-12 01:01) [1]

По идее это можно сделать с помощью ReadConsoleOutputCharacter. Только, судя по самплу в MSDN, первым параметром должен быть хендл stdout. Вопрос, как тебе его получить... Видимо узнать его у абстрактного консольного приложения сложно, но если ты сам запускаешь эту программу, то ты можешь назначить ей stdout. Смотри CreateProcess, поля hStdInput и т.п. в структуре STARTUPINFO и флаг STARTF_USESTDHANDLES.


 
Evgeny V ©   (2003-08-12 06:31) [2]

СreateProcess - там StartupInfo.hStdOutput и StartupInfo.hStdInput, например CreatePipe (&hReadPipe, &hWritePipe, &SecAttr, 0) StartupInfo.hStdOutput =hWritePipe;
StartupInfo.hStdInput =hReadPipe;(код на си), если так то смотри и про Pipe


 
nikkie ©   (2003-08-12 11:15) [3]

Все зависит от того, как осуществляется вывод в этой программе. Если просто пишется в stdout, то проще всего будет читать именно этот вывод, а не консоль. В этом случае и пригодится pipe. Если же вывод идет в ДОС-окно по координатам (а почему-то слова "текстовые строки в определённом месте окна ДОС-программы" наводят меня именно на эту мысль), то что-то мне сомнительно, что pipe хоть что-то получит... Я бы сделал в вызывающей программе AllocConsole (если у нее нет уже консоли). hStdInput и т.п. можно не заполнять - консоль пронаследуется при CreateProcess автоматом (если не предпринимать специальных действий препятствующих этому). После запуска программы читаем с помощью ReadConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), ...).


 
Anikul   (2003-08-12 20:31) [4]

вывод в той программе мне неизвестен, так как то "левая" программка - "секретная" (работает с секретными данными) :), просто необходимо ей обработать много данных, иммитирую клавиатуру - "ввожу" и надо вырезать данные с этого запущенного консольного приложения.
Теоретически почти работает, пользую ReadConsolOutput, но почему-то виснит... Ввод осуществляю с пом ловушек, и ввод и чтение работают по одиночке, коряво, но работают, вместе всё виснет... :(


 
Polevi ©   (2003-08-13 15:23) [5]

попробуй
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=1057316445&n=15



Страницы: 1 вся ветка

Текущий архив: 2003.10.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
14-65628
Blackman
2003-09-27 21:39
2003.10.20
Суббота 27 сентября 2003 года


3-65372
Dark Elf
2003-09-26 14:05
2003.10.20
Логин и пароль в TADOConnection


14-65611
Элина
2003-10-01 10:43
2003.10.20
ИМЯ ПРИНТЕРА


14-65581
Maxim Pshevlotsky
2003-10-02 08:48
2003.10.20
Вопрос по Perl


3-65386
Sesh
2003-09-27 13:44
2003.10.20
MS SQL - Login & Password