将CMD的输入输出重定向到自己的进程

本文介绍了如何将CMD命令行的输入输出重定向到自己的进程中,通过VB代码实现与CMD的交互,允许开发者捕获命令行操作并在应用程序中进一步处理。
摘要由CSDN通过智能技术生成

    前段时间,CSDN VB版的一个网友问了一个如何取得进程句柄的问题,后来贴子中又引出另一个问题:如何将CMD的输入输出重定向到自己的进程?由于楼主提前结了贴子,所以我另开了一个贴子对这个问题作出了回答,两个原贴均可以在CSDNVB版搜索到。现在我把代码记录在此,以飨更多的朋友。

    对于CMD窗口的输入输出重定向,我采用的是匿名管道。关于管道的相关技术和知识,可以参阅网上的其他相关文章或者MSDN,这里不在赘述。

    在窗体中放两个TextBoxtxtCommand用于输入命令;txtMessageMultiLine属性为TrueScrollBars属性为vbVertical,用于获得CMD窗口输出的内容。

 

Option Explicit

 

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 CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Declare Function CreatePipe Lib "kernel32" (phReadPipe As Long, phWritePipe As Long, lpPipeAttributes As Any, ByVal nSize As Long) As Long

Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) 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 SetHandleInformation Lib "kernel32" (ByVal hObject As Long, ByVal dwMask As Long, ByVal dwFlags As Long) As Long

Private Declare Function SetNamedPipeHandleState Lib "kernel32" (ByVal hNamedPipe As Long, lpMode As Long, lpMaxCollectionCount As Long, lpCollectDataTimeout As Long) As Long

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

 

Private Type STARTUPINFO

    cb As Long

    lpReserved As String

    lpDesktop As String

    lpTitle As String

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值