Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » нужно несколько примеров работы с вводом/выводом консольных программ

Ответить
Настройки темы
нужно несколько примеров работы с вводом/выводом консольных программ

Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25


Конфигурация

Профиль | Отправить PM | Цитировать


Пытался сам разобраться, не вышло считать вывод, и ввести ничего не вышло, прошу дать несколько примеров. Буду благодарен.

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:19, 29-06-2010

 

Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


crashtuak,
Здесь посмотрите: Коммуникация процессов при помощи STDIN/STDOUT.
Простой пример:
Код: Выделить весь код
#include <Constants.au3>
#include <Encoding.au3>

$sLog = ''
$mod = Run(@ComSpec & " /C tasklist /?", "", @SW_HIDE, $STDOUT_CHILD)
While 1
    $sLog &= StdoutRead($mod)
    If @error Then ExitLoop
    Sleep(10)
WEnd

MsgBox(0, '', _Encoding_866To1251($sLog))
Encoding UDF - Библиотека для работы с кодировками строк

Последний раз редактировалось madmasles, 29-06-2010 в 16:14.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:54, 29-06-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


madmasles, данный пример комуникации процессов поможет сделать что то на подобии многопоточности(потоков то и вправду будет несколько). Хоть и криво будет, но работает

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 13:26, 30-06-2010 | #3


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


Вот код, который работает не до конца:
Код: Выделить весь код
#include <Constants.au3>
#include <Encoding.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 633, 418, 192, 124)
$Input1 = GUICtrlCreateInput("Input1", 8, 384, 481, 21)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 609, 369)
GUICtrlSetData(-1, "Edit1")
$Button1 = GUICtrlCreateButton("Button1", 496, 384, 121, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
$sLog = ''
$mod = Run("C:\android-sdk-windows\tools\adb.exe", "", @SW_MAXIMIZE , $STDOUT_CHILD)
While 1
    $sLog &= StdoutRead($mod)
	If @error Then ExitLoop
	Sleep(10)
WEnd
GUICtrlSetData ( $Edit1, _Encoding_866To1251($sLog))
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Button1
			
			
	EndSwitch
WEnd
Нужный текст попросту не выводится в $sLog, но отображается в "отладочном окошке" (не знаю как оно правильно называется, обвел красным прямоугольником). Ну и так как в $sLog текст не попал, то и в $Edit1 он не попал тоже... В чем может быть проблема?

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 17:54, 30-06-2010 | #4


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


crashtuak,
У меня нет этой программы, так что не знаю, как Вам помочь.

Отправлено: 19:13, 30-06-2010 | #5


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar adb.rar
(254.9 Kb, 11 просмотров)

madmasles, прошу помочь. adb прикрепил.

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 08:32, 01-07-2010 | #6


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


Ну и еще один вопросик: почему при
Код: Выделить весь код
$mod = Run("C:\windows\system32\cmd.exe", "C:\windows\system32\", @SW_MAXIMIZE , $STDOUT_CHILD)
консоль открывается и сразу закрывается, а при
Код: Выделить весь код
$mod = Run("C:\windows\system32\cmd.exe")
остается работать?(но второй вариант неприменим, потому что надо STDOUT_CHILD)

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 09:31, 01-07-2010 | #7


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


crashtuak,
Попробуйте так:
Код: Выделить весь код
#include <Constants.au3>

Local $foo = Run(@ComSpec & " /c adb.exe", '', @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
WEnd

While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $line)
WEnd
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:24, 01-07-2010 | #8


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


madmasles, оу, спасибо, пашет. Возьму себе на вооружение:если с STDOUT самой проги считать неполучается-считывай с CMD

Ой, а про моментальное закрытие консоли я так и не уточнил...

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 10:34, 01-07-2010 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » нужно несколько примеров работы с вводом/выводом консольных программ

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Что нужно для работы биоиндентификатора в телефоне и на ноутбуке? KINEскоп Флейм 2 16-06-2010 18:35
C/C++ - Работа с hStdOutput и hStdInput сторонних консольных программ crashtuak Программирование и базы данных 1 19-02-2010 05:35
Система - Нужно ПО по сбору статистики работы системы Negativ Программное обеспечение Windows 1 28-12-2009 14:29
Зачем нужно делать несколько проходов (passes)? shmond Видео и аудио: обработка и кодирование 13 12-04-2007 09:28
Delphi - Вычисление сложных примеров на Delphi i KeepeR i Программирование и базы данных 10 11-05-2004 14:58




 
Переход