Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница:

 

  Вопрос: Перехват вывода DOS-приложения в TextBox Добавлено: 06.06.03 18:51  

Автор вопроса:  Comanche

По адресу http://www.msjogren.net/dotnet/eng/samples/vb6_cmdoutput.asp
лежим симпатичный примерчик (Sample2.exe) запуска ДОС-приложения с выводом всего в TextBox. Он прекрасно работает, только если приложение ничего не ждёт с клавиатуры. Т.е. BAT-файл
@Echo off
dir

обрабатывается прекрасно.
Но добавьте в его конец строчку "pause" - и программа зависнет.

То же самое будет, если ввести команду "dir a:", когда в дисководе ничего нет (и по идее, на экране высвечивается "Устройство не готово..." и т.д., с предложением нажать A или R или F).

Вот такая беда...
Как бы это обойти? Я запускаю (через CreateProcess, с флагом SW_HIDE) DOS-приложение, которое вполне может сделать запрос пользователю (в критичных ситуациях). Я не прочь "чёрного окошка" в данном случае - однако, мне надо обязательно перехватывать вывод этой программы в stdout, поскольку то, что она выводит на экран, - это по сути Журнал её работы, со всеми нужными мне мессаджами. По-другому она вести Журнал не умеет (нету и неё ключа /log или чего-то в этом роде, увы).

Для перехвата я не знаю другого метода, кроме "anonymous pipes" (как в упомянутом выше примере из Сети), а они работают через ReadFile, которая "вешается" наглухо, если ДОСовская прога ждёт ввода с клавиатуры.

Ответить

  Ответы Всего ответов: 0  

Нет ответов

Страница:

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам