Autor
|
Tema: Obtener retorno de aplicacion de consola (Leído 2,090 veces)
|
LeandroA
|
buenas se que con visual b es imposible pero quizas aya alguna forma con apis, para obtener el retorno, yo conozco una forma pero esta me muestra los resultados finales pero no todo el proceso, osea si yo pongo en el CMD netstat -a -b me muestra todo el proceso a medidas que se va ejecutando, pues el modulo que tengo llo solo me muestra cuando todo el proceso finalizo.
Bien alguien tiene algun modulo o clase para mostrar toda la operacion en proceso.
Saludos
|
|
|
En línea
|
|
|
|
wACtOr
Desconectado
Mensajes: 461
Premio finalista diseño web elhacker.net
|
no estoy mu puesto en el tema de consolas msdos y vb, pero creo que es algo de pipes, que aun no estoy muy enterao , aunque creo que eso ya lo sabras xDD
|
|
|
En línea
|
|
|
|
|
~~
|
Imposible no es xDD usa la api CreatePipe ejemplo de la api guide: 'Redirects output from console program to textbox. 'Requires two textboxes and one command button. 'Set MultiLine property of Text2 to true. ' 'Original bcx version of this program was made by ' dl <dl@tks.cjb.net> 'VB port was made by Jernej Simoncic <jernej@isg.si> 'Visit Jernejs site at http://www2.arnes.si/~sopjsimo/ ' 'Note: don't run plain DOS programs with this example 'under Windows 95,98 and ME, as the program freezes when 'execution of program is finnished. Option Explicit Private Declare Function CreatePipe Lib "kernel32" (phReadPipe As Long, phWritePipe As Long, lpPipeAttributes As SECURITY_ATTRIBUTES, ByVal nSize As Long) As Long Private Declare Sub GetStartupInfo Lib "kernel32" Alias "GetStartupInfoA" (lpStartupInfo As STARTUPINFO) Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type Private Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessId As Long dwThreadId As Long End Type Private Type STARTUPINFO cb As Long lpReserved As Long lpDesktop As Long lpTitle As Long dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Byte hStdInput As Long hStdOutput As Long hStdError As Long End Type Private Type OVERLAPPED ternal As Long ternalHigh As Long offset As Long OffsetHigh As Long hEvent As Long End Type Private Const STARTF_USESHOWWINDOW = &H1 Private Const STARTF_USESTDHANDLES = &H100 Private Const SW_HIDE = 0 Private Const EM_SETSEL = &HB1 Private Const EM_REPLACESEL = &HC2 Private Sub Command1_Click() Command1.Enabled = False Redirect Text1.Text, Text2 Command1.Enabled = True End Sub Private Sub Form_Load() Text1.Text = "ping" End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If Command1.Enabled = False Then Cancel = True End Sub Sub Redirect(cmdLine As String, objTarget As Object) Dim i%, t$ Dim pa As SECURITY_ATTRIBUTES Dim pra As SECURITY_ATTRIBUTES Dim tra As SECURITY_ATTRIBUTES Dim pi As PROCESS_INFORMATION Dim sui As STARTUPINFO Dim hRead As Long Dim hWrite As Long Dim bRead As Long Dim lpBuffer(1024) As Byte pa.nLength = Len(pa) pa.lpSecurityDescriptor = 0 pa.bInheritHandle = True pra.nLength = Len(pra) tra.nLength = Len(tra) If CreatePipe(hRead, hWrite, pa, 0) <> 0 Then sui.cb = Len(sui) GetStartupInfo sui sui.hStdOutput = hWrite sui.hStdError = hWrite sui.dwFlags = STARTF_USESHOWWINDOW Or STARTF_USESTDHANDLES sui.wShowWindow = SW_HIDE If CreateProcess(vbNullString, cmdLine, pra, tra, True, 0, Null, vbNullString, sui, pi) <> 0 Then SetWindowText objTarget.hwnd, "" Do Erase lpBuffer() If ReadFile(hRead, lpBuffer(0), 1023, bRead, ByVal 0&) Then SendMessage objTarget.hwnd, EM_SETSEL, -1, 0 SendMessage objTarget.hwnd, EM_REPLACESEL, False, lpBuffer(0) DoEvents Else CloseHandle pi.hThread CloseHandle pi.hProcess Exit Do End If CloseHandle hWrite Loop CloseHandle hRead End If End If End Sub
|
|
|
En línea
|
|
|
|
LeandroA
|
Gracias E0N!! joya no avia visto el ejemplo del apiguide. funciona tal como queria, el DrakoX tambien esta bueno, pero es un poquito mas largo.
Muchas gracias
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
vb en aplicacion consola
.NET (C#, VB.NET, ASP)
|
chrisstine2975
|
5
|
5,937
|
21 Mayo 2012, 07:01 am
por chrisstine2975
|
|
|
Salir de una aplicacion de consola
.NET (C#, VB.NET, ASP)
|
MaNuLoki
|
4
|
13,612
|
24 Octubre 2014, 04:09 am
por Eleкtro
|
|
|
Aplicacion de Consola C# - Programa Pilas
« 1 2 »
.NET (C#, VB.NET, ASP)
|
Castiel
|
10
|
16,438
|
3 Agosto 2016, 05:58 am
por El Benjo
|
|
|
[RESUELTO] Condiciones en C# [Aplicacion de consola]
.NET (C#, VB.NET, ASP)
|
laut3n
|
2
|
3,121
|
25 Febrero 2015, 16:39 pm
por laut3n
|
|
|
Obtener retorno de consola en un tetxtbox o richtext. Ayuda
Programación Visual Basic
|
Fucko
|
1
|
1,638
|
29 Mayo 2021, 23:02 pm
por BlackZeroX
|
|