运行DOS系列命令
.版本 2
.支持库 eAPI
.支持库 EThread
.程序集 窗口程序集1
.子程序 __启动窗口_创建完毕
.子程序 匿名管道运行DOS, , , 以匿名管道方式运行DOS系列命令。因为中间启用了多线程,所以无法设置返回结果.
.参数 欲运行的DOS命令, 文本型, , 命令连同后面的参数。如“dir c:”
.参数 该命令所在目录, 文本型, 可空, 欲运行的命令所在的目录。为空默认为系统当前目录。注意以斜杠结尾。
.参数 回显编辑框, 编辑框, 可空, 指定命令实时回显所用的编辑框。不指定则不回显。
.局部变量 管道a, 整数型
.局部变量 管道b, 整数型
.局部变量 创建进程, 整数型
.局部变量 系统信息1, 系统信息
取系统信息 (系统信息1)
安全属性a.长度 = 12
安全属性a.权限 = 0
安全属性a.句柄 = -1
安全属性b.长度 = 12
安全属性b.权限 = 0
安全属性b.句柄 = -1
改变目录 (系统信息1.系统目录)
.如果真 (该命令所在目录 ≠ “”)
改变目录 (该命令所在目录)
.如果真结束
管道a = 创建匿名管道 (a输出管道, a输入管道, 安全属性a, 0)
管道b = 创建匿名管道 (b输出管道, b输入管道, 安全属性b, 0)
获取启动信息_ (启动信息)
启动信息.dwFlags = 257 ' 大小类型
启动信息.hStdInput = a输出管道 ' 重定向标准输入
启动信息.hStdOutput = b输入管道 ' 重定向标准输出
启动信息.hStdError = b输入管道 ' 重定向标准错误输出
启动信息.wShowWindow = 0 ' 隐藏运行
创建进程 = 创建进程 (0, “cmd.exe”, 0, 0, -1, 0, 0, 取当前目录 (), 启动信息, 进程信息)
写管道 (欲运行的DOS命令)
.如果真 (是否已创建 (回显编辑框))
回显编辑框.内容 = “”
回显编辑框.标记 = “73387040”
启动线程 (&读管道, , )
.如果真结束
.子程序 读管道
.局部变量 实际尺寸, 整数型
.局部变量 缓存, 字节集
.局部变量 临时文本, 文本型
.局部变量 回显编辑框, 编辑框
回显编辑框 = 取标记组件 (73387040)
缓存 = 取空白字节集 (260)
.判断循环首 (读文件 (b输出管道, 缓存, 260, 实际尺寸, 0) ≠ 0 且 实际尺寸 ≠ 0)
临时文本 = 到文本 (取字节集左边 (缓存, 实际尺寸))
回显编辑框.加入文本 (临时文本)
.判断循环尾 ()
.子程序 写管道
.参数 命令名, 文本型
.局部变量 shell, 字节集
.局部变量 实际尺寸, 整数型
shell = 到字节集 (命令名 + #换行符)
写文件 (a输入管道, shell, 取字节集长度 (shell), 实际尺寸, 0)
.子程序 _按钮1_被单击
匿名管道运行DOS (编辑框2.内容, 编辑框3.内容, 编辑框1)
.子程序 _按钮2_被单击
匿名管道运行DOS (编辑框2.内容)
易语言强制执行DOS批命令
dos源码