2012-02-22 3 views
1

Я хочу записать вывод из VBScript в блокнот/wordpad в реальном времени. Каков наилучший способ сделать это? Я знаю sendkeys, но для этого требуется, чтобы я разбирал ввод для специальных команд.VBScript to Notepad/Wordpad

+0

Почему бы не использовать файл systemobject для создания текстового потока? – Fionnuala

+1

Разбор особых персонажей на самом деле не является ракеткой. Использование регулярного выражения типа 'Regex.Replace (myString," ([\ + \^\% \ ~ \ {\} \ [\] \ (\)]) "," {$ 1} ")' должно делать трюк. Возможно, вы захотите также заменить символ «Tab» и «Newline», который станет чем-то вроде «Regex.Replace (myString,« \ t »,« {TAB} ») и' Regex.Replace (myString, " \ r \ n "," {ENTER} ")'. Это единственные символы, которые вы должны заменить, потому что все другие специальные входы - это ввод с клавиатуры, например '{SHIFT}', '{F1}' и т. Д. – AutomatedChaos

ответ

2

SendKeys является единственным методом для записи в стороннее приложение в режиме реального времени. Почему бы вам не использовать CScript и вместо этого писать на стандартный вывод? Для этого он предназначен.

' Force the script to run in the CScript engine 
If LCase(Right(WScript.FullName, 11)) <> "cscript.exe" Then 
    strPath = WScript.ScriptFullName 
    strCommand = "%comspec% /k cscript " & Chr(34) & strPath & chr(34) 
    CreateObject("WScript.Shell").Run(strCommand) 
    WScript.Quit 
End If 

For i = 1 to 10 
    For j = 0 to 25 
    WScript.StdOut.WriteLine String(j, " ") & "." 
    WScript.Sleep 50 
    Next 

    For j = 24 to 1 Step - 1 
    WScript.StdOut.WriteLine String(j, " ") & "." 
    WScript.Sleep 50 
    Next 
Next 
1

Попробуйте это

Const fsoForWriting = 2 

    Dim objFSO 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 

    'Open the text file 
    Dim objTextStream 
    Set objTextStream = objFSO.OpenTextFile("C:\SomeFile.txt", fsoForWriting, True) 

    'Display the contents of the text file 
    objTextStream.WriteLine "Hello, World!" 

    'Close the file and clean up 
    objTextStream.Close 
    Set objTextStream = Nothing 
    Set objFSO = Nothing