在VB6中创建进程时(与此问题相关:),我使用以下结构:
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需要做些什么?
谢谢!!
通过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