Главная страница
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.018 c
1-65489
satron
2003-10-08 16:21
2003.10.20
Французский шрифт в Edit и RichEdit


1-65456
Nikolai_S
2003-10-07 12:45
2003.10.20
Проблема с потоком


14-65630
Igorek
2003-09-30 22:05
2003.10.20
Ревизия высказываний и формальный язык


1-65451
BST
2003-10-06 22:35
2003.10.20
Memo


14-65583
Zhouck
2003-10-02 12:53
2003.10.20
Звуковуха ForteMedia