在VB6中创建进程时(与this问题:)相关,我使用以下结构:
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
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 Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
在开始我的流程之前,为了让我的VB6应用程序读取托管流程的输出,STARTUPINFO.hStdOutput需要做些什么?
谢谢!
答案 0 :(得分:5)
跟进this other question by the OP后,我发布了一个替代方法来执行命令并获取stdout:
' References: "Windows Script Host Shell Object Model" '
Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" ( _
ByVal dwMilliseconds As Long)
Function ExecuteCommand(cmd As String, ExpectedResult as Long) As String
Dim shell As New IWshRuntimeLibrary.WshShell
Dim exec As IWshRuntimeLibrary.WshExec
Set exec = shell.Exec(cmd)
While exec.Status = 0
Sleep 100
Wend
If exec.ExitCode = ExpectedResult Then
ExecuteCommand = exec.StdOut.ReadAll
Else
ExecuteCommand = vbNullString ' or whatever '
End
End Function
答案 1 :(得分:2)
Microsoft在此提供了一个如何操作的示例。
答案 2 :(得分:0)
请参阅AttachConsole(ATTACH_PARENT_PROCESS)