Как мне прочитать стандартный вывод дочернего процесса в VB6? - PullRequest
0 голосов
/ 21 февраля 2009

При создании процесса в 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

Прежде чем я начну свой процесс, что должно произойти с STARTUPINFO.hStdOutput, чтобы мое приложение VB6 могло прочитать выходные данные моего размещенного процесса?

Спасибо !!

Ответы [ 3 ]

5 голосов
/ 21 февраля 2009

Вслед за этим другим вопросом от 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
2 голосов
/ 21 февраля 2009

Microsoft дает пример того, как это сделать.

0 голосов
/ 21 февраля 2009

См. AttachConsole(ATTACH_PARENT_PROCESS)

...