Перехват вывода VBScript

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tathagata
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 26.07.2004 (Пн) 14:56

Перехват вывода VBScript

Сообщение Tathagata » 02.11.2004 (Вт) 17:44

Подскажите, плз, можно ли в VBScript запустив к выполнению консольное приложение перехватить вывод результата?

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 02.11.2004 (Вт) 21:56

Код: Выделить всё
'*******************************************************************
' Имя: StdIn1.vbs                                               
' Язык: VBScript                                                   
' Описание: Пример использования метода StdIn.WriteLine           
'*******************************************************************
' Функция для перевода строки из DOS- в Windows-кодировку
Function DosToWin(s)
Dim i,k,ss
  ss=""
  For i=1 To Len(s)  ' Цикл по всем символам в строке
    k = Asc(Mid(s,i,1))  ' Определяем ANSI-код i-го символа
    ' Изменяем код k на код соответствующего символа в
    ' Windows-кодировке
    If (128 <= k) And (k <= 175) Then
      k=k+64
    ElseIf (224 <= k) And (k <= 239) Then
      k=k+16
    ElseIf k = 240 Then
      k=168
    ElseIf k = 241 Then
      k=184
    End If
    ss=ss+Chr(k)  ' Возвращаем преобразованную строку
  Next
DosToWin=ss
End Function

'*************  Начало *********************************************
Dim s
' Печатаем приглашение для ввода
WScript.StdOut.Write "Введите одну строку: "
s = WScript.StdIn.ReadLine  ' Вводим строку с клавиатуры
WScript.StdOut.WriteBlankLines 1   ' Печатаем пустую строку
WScript.StdOut.Write "Было введено: "
' Преобразовываем введенную строку в Windows-кодировку
' и выводим ее на экран
WScript.StdOut.WriteLine DosToWin(s)
'*************  Конец *********************************************


Или

Код: Выделить всё
'*******************************************************************
' Имя: StdIn2.vbs                                               
' Язык: VBScript                                                 
' Описание: Пример использования метода StdIn.ReadAll           
'*******************************************************************
Option Explicit
' Функция для перевода строки из DOS- в Windows-кодировку
Function DosToWin(s)
Dim i,k,ss
  ss=""
  For i=1 To Len(s)  ' Цикл по всем символам в строке
    k = Asc(Mid(s,i,1))  ' Определяем ANSI-код i-го символа
    ' Изменяем код k на код соответствующего символа в
    ' Windows-кодировке
    If (128 <= k) And (k <= 175) Then
      k=k+64
    ElseIf (224 <= k) And (k <= 239) Then
      k=k+16
    ElseIf k = 240 Then
      k=168
    ElseIf k = 241 Then
      k=184
    End If
    ss=ss+Chr(k)
  Next
  DosToWin=ss   ' Возвращаем преобразованную строку
End Function

'*************  Начало *********************************************
Dim s,ArrS,i,ColStr   ' Объявляем переменные
' Печатаем приглашение для ввода
WScript.StdOut.WriteLine "Вводите строки:"
s = WScript.StdIn.ReadAll  ' Вводим строки с клавиатуры
WScript.StdOut.WriteBlankLines 3  ' Печатаем пустые строки
ArrS=Split(s,vbCrLf)  ' Формируем массив из введенных строк
ColStr=UBound(ArrS)+1
' Печатаем введенные строки
WScript.StdOut.WriteLine "Всего ведено строк: " & ColStr
For i=1 To ColStr
  ' Преобразовываем введенные строки в Windows-кодировку
  ' и выводим их на экран
  WScript.StdOut.WriteLine i & ": " & DosToWin(ArrS(i-1))
Next
'*************  Конец *********************************************/


Или вот ещё - в этом скрипте у меня выводится UpTime системы

Код: Выделить всё
'==========================================================================
'
' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 3.0
'
' NAME: UpTime XP
'
' AUTHOR:  Demidow Ruslan,
' DATE  : 14.10.2003
'
' COMMENT: Get uptime of system
'
'==========================================================================
Option Explicit
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const vbHidden=4
Dim Wshell, TempText, SysInfo, FSO, Result, strInfo, text, info, findInfo,s, WinString

Function DosToWin(s)
Dim i,k,ss
  ss=""
  For i=1 To Len(s)  ' Цикл по всем символам в строке
    k = Asc(Mid(s,i,1))  ' Определяем ANSI-код i-го символа
    ' Изменяем код k на код соответствующего символа в
    ' Windows-кодировке
    If (128 <= k) And (k <= 175) Then
      k=k+64
    ElseIf (224 <= k) And (k <= 239) Then
      k=k+16
    ElseIf k = 240 Then
      k=168
    ElseIf k = 241 Then
      k=184
    End If
    ss=ss+Chr(k)  ' Возвращаем преобразованную строку
  Next
DosToWin=ss
End Function

Function WinToDos(WinString)
Dim i,k,ss,L
ss=""
   For i=1 to Len(WinString)
   k=Asc(Mid(WinString,i,1))
   L=k
   If (128<=k) And (k<=175) Then
     k=k-16
    Elseif (k>=224) And (k <= 239) Then
     k=k-64
    ElseIf k = 168 Then
      k=240
    ElseIf k = 184 Then
      k=241
    End If
    ss=ss+Chr(k)  ' Возвращаем преобразованную строку
  Next
WinToDos=ss   
End Function

findInfo="‚६п а Ў®вл бЁб⥬л:"
Set Wshell=Wscript.CreateObject("Wscript.Shell")
Set fso=CreateObject("Scripting.FileSystemObject")
set Result=Wshell.Exec ("C:\windows\system32\SystemInfo.exe")
Set strInfo=Result.StdOut


Do While strInfo.AtEndOfStream=False
Info=strInfo.ReadLine

If Left(info,Len(FindInfo))=FindInfo Then
   MsgBox DosToWin(info)
End If
Loop
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Tathagata
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 26.07.2004 (Пн) 14:56

Сообщение Tathagata » 03.11.2004 (Ср) 10:27

Ruslan Demidow писал(а):
Код: Выделить всё
Set strInfo=Result.StdOut


Спасибо - это то что нужно.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 17

    TopList  
cron