Como lo hago

Caz
30 de Octubre del 2003
Saludos a todos...!

Tengo un problema con una aplicacion desarrollada en Vb6 y windows 2000, el problema consiste en:

yo quiero ejecutar un comando en el simbolo de sistema de la siguiente manera, hago un archivo .Bat y luego le aplicaco un Shell a ese archivo, eso es perfecto eso me funciona.... pero quiero que la ventana que se abre se quede se abierta para yo poder leer el resultado... ó como capturo el resultado en un archivo txt.

Ejemplo: vallanse al menu inicio/ ejecutar /
y alli escriban ipconfig y ven lo que pasa.....

no puedo leer el resultado que el comando me trae porque pasa demaciado rapido...

populous
30 de Octubre del 2003
Re-dirigiendo la salida al shell...

Para redigir la salida usa el caracter ">".
Por ejemplo: dir >prn (HAce un listado y lo imprime sin mostrar en pantalla...

dir >nombrefichero almacena el listado en el fichero especificado..

etc..

Pero yo que tu me olvidaría de los archivos de proceso por lotes o sus llamadas desde visual..

Desde visual se puede controlar practicamente cualquier comando del DOS...

Saludos,
populous

Juan
30 de Octubre del 2003
He encontrado este ejemplo en la MSDN Library, no se
si funciona, ni si es la que necesitas, pero de todas formas
aquí lo tienes:

Step-by-Step Example

Use Notepad to create the following batch file:


DIR /W

and save it as C:TEST.BAT


In Visual Basic, create a new project with a form and a module.

Type the following API declarations in the module:
Option Explicit


Declare Function AllocConsole Lib "kernel32" () As Long
Declare Function FreeConsole Lib "kernel32" () As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) _
As Long
Declare Function GetStdHandle Lib "kernel32" (ByVal _
nStdHandle As Long) As Long
Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _
(ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal _
nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _
lpReserved As Any) As Long

Public Const STD_OUTPUT_HANDLE = -11&



Add a CommandButton to the form and enter the following code:
Dim hConsole As Long


Private Sub Command1_Click()
Dim Result As Long, sOut As String, cWritten As Long
sOut = "Hi There" & vbCrLf
Result = WriteConsole(hConsole, ByVal sOut, Len(sOut), cWritten, _
ByVal 0&)
Shell "C:TEST.BAT"
End Sub

Private Sub Form_Load()
If AllocConsole() Then
hConsole = GetStdHandle(STD_OUTPUT_HANDLE)
If hConsole = 0 Then MsgBox "Couldn't allocate STDOUT"
Else
MsgBox "Couldn't allocate console"
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
CloseHandle hConsole
FreeConsole
End Sub



Run the application. A blank console window will appear.

Click the CommandButton. Both the text in sOut and the output from the batch file will appear in the console.

Close the form. The console window will terminate.