Имя пользователя:
Пароль:
 

Название темы: проблема с WScript.Shell.Exec
Показать сообщение отдельно

Ветеран


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

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


Цитата morebeauty:
Скажите, а Вы совсем не догадывались что именно я ожидал увидеть? А если у Вас были догадки, скажите, среди них была "открывая командную строку ожидал увидеть немецкое порно"? »
Нет, на это моей фантазии не хватило.


Цитата morebeauty:
То есть ожидал полноценную командную строку с возможностью ввода/вывода. »
Вы и получили полноценную командную строку с возможностью ввода/вывода. Программного — поскольку потоки ввода, вывода и ошибок (stdin, stdout, stderr) перехвачены. Поскольку перехвачен поток вывода — вывод идёт к объекту WshExec, а не на консоль — посему Вы не видите вывод в окне консоли. Поскольку перехвачен поток ввода — ввод ожидается от объекта WshExec, а не из консоли — посему Вы не можете осуществить ввод в окно консоли: этот ввод некому обрабатывать. С потоком ошибок аналогично потоку вывода.

Пример программной работы с потоками дочернего консольного приложения:
Код: Выделить весь код
Option Explicit

Const WshRunning = 0
Const WshFinished = 1
Const WshFailed = 2


Dim objWshShell
Dim objWshExec

Dim strStdOut
Dim strStdErr


Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objWshExec  = objWshShell.Exec("""%comspec%"" /k")

If objWshExec.Status <> WshFailed Then
	objWshExec.StdIn.WriteLine "cd /d ""%SystemRoot%"""
	objWshExec.StdIn.WriteLine "dir /b /s ""*.exe"""
	objWshExec.StdIn.WriteLine "exit"
	
	strStdOut = ""
	strStdErr = ""
	
	Do
		strStdOut = strStdOut & objWshExec.StdOut.ReadAll()
		strStdErr = strStdErr & objWshExec.StdOut.ReadAll()
		
		WScript.Sleep 100
	Loop Until objWshExec.Status = WshFinished
	
	WScript.Echo "StdOut:"
	WScript.Echo strStdOut
	
	WScript.Echo
	
	WScript.Echo "StdErr:"
	WScript.Echo strStdErr
Else
	WScript.Echo "Can't execute [""%comspec%"" /k]."
End If

Set objWshExec  = Nothing
Set objWshShell = Nothing

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

Отправлено: 19:53, 12-11-2013 | #7

Название темы: проблема с WScript.Shell.Exec