本帖最后由 venski 于 2013-12-21 13:22 编辑
TC中虽然也有执行CMD命令的功能,但没有回显内容,比如:
//一个简单的拷文件命令.
是否成功=辅助.命令("cmd /c copy c:\\1.txt c:\\2.txt",false)
或许,你想到了,可以用WScript.Shell达到目的,非常可惜地是,显示黑黑的DOS窗口,一闪而过.
比如:
批处理对象=com("WScript.Shell")
批处理执行对象=批处理对象.exec("ping 192.168.1.1")
批处理输出对象=批处理执行对象.StdOut()
批处理返回值=批处理输出对象.Readall()
你也可能使用
批处理对象.run("1.bat",0)
把CMD命令写在bat文件,然后输出一个文件的办法,其实这也是可以的.
当然,我们的C语言中,可以利用creatprocess来进理这个问题,显然,TC暂时不支持结构(以后可能发生的事,以后再说).
现实中,我们很多地方需要执行CMD命令(批处理)而得到回显内容.
就比如,我们 ping 192.168.1.1,需要得到回显的:
正在 Ping 192.168.1.1 具有 32 字节的数据:
来自 192.168.1.1 的回复: 字节=32 时间=17ms TTL=62
还有,很多,比如,你用CMD操作 wmi取得硬件信息/查看现在的进程/远程执行shell/远程执行FTP等等命令.
这就来帮你解决难题:
附件,有写好的一个DLL插件,放在生成目录,你只要简单地调用就可以.
变量 命令文本="cmd /c ping 192.168.1.1"
批处理返回值=dllcall("qs.dll","char *","Tcmd","char *",命令文本)
辅助.消息框(批处理返回值,"")
DLL介绍:
你看他体积那么小就可以理解,仅此一个功能,执行CMD.
执行CMD命令并返回内容,不显示黑黑的窗口.
原理:
采用powerbasic编译器制作,创建管道,创建进程的方式让CMD命令在后台执行,不显示黑黑的窗口.
|