Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-65547
qq
2003-10-07 11:49
2003.10.20
dnd ltd


14-65588
Ua
2003-10-02 11:03
2003.10.20
Глупый вопрос по поводу WM


4-65672
while(1=1)
2003-08-13 18:52
2003.10.20
Нужно узнать что передает через message одна программа другой!


3-65392
griser
2003-09-26 17:29
2003.10.20
DCOM


3-65351
konst
2003-09-29 12:29
2003.10.20
сортировка Query





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский