Skip to content

cStdIO 标准输入输出组件

概述

cStdIO 是 VBMAN 框架提供的命令行执行组件,用于在 VB6 中执行外部命令行程序并捕获其标准输出。支持超时控制、工作目录设置和进程退出码获取。

特性

  • 捕获输出 - 完整捕获命令行的标准输出(STDOUT)
  • 隐藏窗口 - 后台执行,不显示命令行窗口
  • 超时控制 - 可设置执行超时时间,防止进程卡死
  • 工作目录 - 支持指定命令执行的工作目录
  • 退出码获取 - 获取进程退出代码,判断执行结果

快速开始

简单执行命令

vb
Dim StdIO As New cStdIO
Dim Output As String
Dim ExitCode As Long

' 执行命令并获取输出
Output = StdIO.ExecuteCommand("ipconfig /all", 5000, "", ExitCode)

Debug.Print "输出:" & Output
Debug.Print "退出码:" & ExitCode

执行并检查退出码

vb
Private Sub RunGitStatus()
    Dim StdIO As New cStdIO
    Dim Result As String
    Dim ExitCode As Long
    
    Result = StdIO.ExecuteCommand("git status", 10000, "D:\\MyProject", ExitCode)
    
    If ExitCode = 0 Then
        Debug.Print "Git 状态:" & vbCrLf & Result
    Else
        Debug.Print "命令执行失败,退出码:" & ExitCode
    End If
End Sub

超时处理

vb
Private Sub RunWithTimeout()
    Dim StdIO As New cStdIO
    Dim Result As String
    Dim ExitCode As Long
    
    On Error GoTo ErrorHandler
    
    ' 设置 5 秒超时
    Result = StdIO.ExecuteCommand("long-running-task.exe", 5000, "", ExitCode)
    Debug.Print Result
    Exit Sub
    
ErrorHandler:
    If InStr(Err.Description, "执行超时") > 0 Then
        MsgBox "命令执行超时!", vbExclamation
    End If
End Sub

典型应用场景

场景示例命令
系统信息ipconfig /all, systeminfo
Git 操作git status, git log --oneline
文件操作dir /s, findstr "keyword" *.txt
网络检测ping 8.8.8.8, tracert baidu.com
编译构建msbuild MyProject.sln

注意事项

  1. 超时时间 - 单位为毫秒,默认 10 秒
  2. 窗口隐藏 - 命令行窗口自动隐藏,后台执行
  3. 编码问题 - 输出文本编码取决于系统默认编码
  4. 大数据量 - 输出内容过大时可能占用较多内存

VB6及其LOGO版权为微软公司所有