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
||Returns or sets the buffersize that
is used to read the stdout. Default is 8192.
||Returns the last windows
||The name of the
||Returns true if the
console-application is running.
||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
||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.
||Stops the console-application.
||Byval sCommandString As String
||Writes sCommandString to the stdin of the
console-application. Returns false when an error ocurred.
Events of the Application Object
||sData As String
||The data from the stdout of the
||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.