下你所需,载你所想!
汇集开发技术源码资料

系统CMD工具源码 匿名管道开源

:11.624KB :1 :2019-12-19 08:25:28

部分简介

用WINDOWS控制台,界面什么的就不用愁了!输出点信息都是点阵字体!!
然后读入输入文本开启管道就是了,是不是特别简单呢?

01.匿名管道是一种进程间的通讯方式,是相对于命名管道的概念提出的。

02.命名管道可用于任意两个进程间的通讯。

03.匿名管道仅可用于本地进程,并且必须是父进程与子进程间的通讯。

04.它的优点是运行速度快,系统消耗小。缺点就是以上的限制条件啦。
标准输出 (1, #CMD基本输出信息 + #换行符)
.判断循环首 (1 = 到整数 (“1”))
标准输出 (1, #换行符 + 取运行目录 () + “>”)
输入内容 = 标准输入 (真)
SECURITY_ATTRIBUTES.nLength = 12
SECURITY_ATTRIBUTES.lpSecurityDescriptor = 0
SECURITY_ATTRIBUTES.bInheritHandle = 1
CreatePipe (hRead, hWrite, SECURITY_ATTRIBUTES, 0) ' 创建一个匿名管道
STARTUPINFO.cb = 68
STARTUPINFO.dwFlags = 位或 (#STARTF_USESHOWWINDOW, #STARTF_USESTDHANDLES)
STARTUPINFO.wShowWindow = #SW_HIDE
STARTUPINFO.hStdOutput = hWrite
STARTUPINFO.hStdError = hWrite
.如果 (取操作系统类别 () ≤ 2)
CreateProcess (0, “command.com /c ” + 输入内容, 0, 0, 真, 0, 0, 0, STARTUPINFO, PROCESS_INFORMATION) ' 创建一个新进程,并且设置读写管道,创建成功后,进程会自动再创建一个写管道端口
.否则
CreateProcess (0, “cmd.exe /c ” + 输入内容, 0, 0, 真, 0, 0, 0, STARTUPINFO, PROCESS_INFORMATION) ' 创建一个新进程,并且设置读写管道,创建成功后,进程会自动再创建一个写管道端口
.如果结束

CloseHandle (hWrite) ' 因为我们开始已经创建了一个写管道端口,现在进程创键时又自动创键了一个写管道端口,所以应关闭多余的管道写端口
.判断循环首 (len ≠ -1) ' 制造一个无限循环
PeekNamedPipe (hRead, 0, 0, 0, len, 0) ' 查看管道中是否有数据
.如果 (len ≠ 0)
txt = 取空白字节集 (1024)
ReadFile (hRead, txt, 1023, len, 0) ' 从管道中读取数据
标准输出 (1, 取字节集数据 (txt, #文本型, ))
.否则
GetExitCodeProcess (PROCESS_INFORMATION.hProcess, EXIT) ' 查看指定进程是否已结束
.如果真 (EXIT ≠ #STILL_ACTIVE) ' 因为会有程序退出来了,但管道中还有数据的情况,所以必须在管道中没有数据的情况下判断程序是否已结束,这时才能中止循环!
CloseHandle (hRead) ' 关闭管道
跳出循环 ()
.如果真结束

.如果结束
处理事件 ()
输出调试文本 (到文本 (len))
.判断循环尾 ()

.判断循环尾 ()
返回 (0) ' 可以根据您的需要返回任意数值

系统CMD工具源码 匿名管道开源

热门推荐

相关文章