Download demo project - 6 Kb
Download source - 21Kb
Download control (ver. Windows '98) - 26 Kb
This control makes it possible to redirect the stdin/stdout of a console-application to
your program. It's even possible to redirect MS-DOS commands to your application. I've
written this project in Visual C++ 6.0 with ATL 3.0, because you can't use multithreading
in Visual Basic.
Properties of the Application Object
|Name ||Type ||R/W ||Description |
|BufferSize ||Integer ||Read/Write ||Returns or sets the buffersize that
is used to read the stdout. Default is 8192. |
|LastErrorNumber ||Long ||Read ||Returns the last windows
|Name ||String ||Read/Write ||The name of the
|Running ||Boolean ||Read ||Returns true if the
console-application is running. |
|Wait ||Long ||Read/Write ||Sets the milliseconds to wait for
checking the stdout. If the console-application runs a long time, make sure you set this
property, because otherwise your program will not have enough time to process other tasks.
Methods of the Application Object
|Name ||Returns ||Parameters ||Description |
|Start ||eStartResult ||/ ||Starts the console-application. Returns
laAlreadyRunning when the console-application was already started. Retuns laWindowsError
when an error occurred. Returns laOk when the console-application is started correctly. |
|Stop || ||/ ||Stops the console-application. |
|Write ||Boolean ||Byval sCommandString As String ||Writes sCommandString to the stdin of the
console-application. Returns false when an error ocurred. |
Events of the Application Object
|Name ||Parameters ||Description |
|DataReceived ||sData As String ||The data from the stdout of the
|ProcessEnded ||/ ||The console-application ended. |
The following VB-Example starts the MS-DOS prompt in Windows'98 and executes the dir
command. The received data is displayed in a TextBox.
Dim WithEvents oLaunch As redirectlib.Application
Set oLaunch = New redirectlib.Application
oLaunch.BufferSize = 8192
oLaunch.Wait = 1000
oLaunch.Name = "c:\windows\command.com"
Select Case oLaunch.Start
MsgBox "Already running !"
MsgBox "Windows error: " &
CStr(oLaunch.LastErrorNumber) & "!"
oLaunch.Write "dir" + vbCrLf
oLaunch.Write "exit" + vbCrLf
Private Sub oLaunch_DataReceived(ByVal sData As String)
txtOutput.Text = txtOutput.Text + sData
txtOutput.SelStart = Len(txtOutput.Text)
Private Sub oLaunch_ProcessEnded()
MsgBox "Program stopped"
When you use the MS-prompt in Windows NT (cmd.exe) then you can stop the
console-application with the Stop-method. However in Windows '98 this doesn't work. Why I
don't know. You can solve this by writing the "exit"-command to stdin of the
console-application. Other console-applications work fine with NT and '98.
The control was tested on Windows NT and Windows '98.
The control is written with Visual C++ 6.0 using ATL 3.0. The control was tested with
Visual Basic 6.0
These are resources I've used to create this project :
- HOWTO: Spawn
Console Processes with Redirected Standard Handles
- Redirecting Standard Output to a
- Redirect Output of
CMD.EXE to a Pipe
Check my website for updates.