vb截取控制台回显的信息DOS窗口错误信息
在Windows环境下的所谓shell程序就是dos命令行程序,比如VC的CL.exe命令行编译器,JDK的javac编译器,启动java程序用的java.exe都是标准的shell程序。截获一个shell程序的输出是很有用的,比如说您可以自己编写一个IDE(集成开发环境),当用户发出编译指令时候,你可以在后台启动shell 调用编译器并截获它们的输出,对这些输出信息进行分析后在更为友好的用户界面上显示出来。为了方便起见,我们用VB作为本文的演示语言。
通常,系统启动Shell程序时缺省给定了3个I/O信道,标准输入(stdin), 标准输出stdout, 标准错误输出stderr。之所以这么区分是因为在早期的计算机系统如PDP-11的一些限制。那时没有GUI, 将输出分为stdout,stderr可以避免程序的调试信息和正常输出的信息混杂在一起。
通常, shell程序把它们的输出写入标准输出管道(stdout)、把出错信息写入标准错误管道(stderr)。缺省情况下,系统将管道的输出直接送到屏幕,这样一来我们就能看到应用程序运行结果了。
为了捕获一个标准控制台应用程序的输出,我们必须把standOutput和standError管道输出重定向到我们自定义的管道。
本站代码都经过亲测,运行无误。上面是复制的理论,所以摘下来。
VB读取DOS命令回显
'我只要个简单的功能,比如运行ipconfig能把回显读取到,网上找了没效果,要么就是大篇大篇的调用 '下面这个函数能实现,需要 WScript.Shell 组件(WSHom.ocx)和cmd.exe的支持,如果你禁用了那就没法了 '调用 msgbox dosprint("ipconfig") Function dosprint(strCommand) Dim objShell As Object Set objShell = CreateObject("WScript.Shell") Set objWshScriptExec = objShell.Exec("c:\windows\system32\cmd.exe /c " & strCommand) Set objStdOut = objWshScriptExec.StdOut dosprint = objStdOut.ReadAll Set objShell = Nothing End Function
VB控制台程序示例,VB在DOS窗口下运行
有的程序我们不需要窗体的,比如在DOS下运行 md5.exe mypass,我们想在DOS窗口中直接打印中”mypass”的MD5值,那就要用到VB中的Console Windows称为控制台程序,首先我们把VB中的窗体移除,省下资源,然后添个模块,添加 sub main()这个过程,然后在工程属性中,启动项那儿选择submain就可以了,程序会静默运行。 下面的代码演示了,运行时弹出个DOS窗口,让用户输入名字,并把名字显示出来的过程。
asp在线nslookup查询域名DNS地址
原理主要是用WScript.Shell 调用 nslookup命令,然后将回显输出来
其实最好的办法还是做DLL组件再到服务器上注册。
目前我们用cmd方式得到的数据很直接也简单,只是后期格式化要麻烦点。
如果你不能运行下面的asp代码,注意检查iis是脚本权限是否勾了可执行,再把iis用户加入管理员组。
1 2 3 4 5 6 7 8 9 | function nslookup(t,d,n) 't 类型 d 域名 n 服务器 Set objWShell=CreateObject("WScript.Shell") cmdline = "nslookup.exe -timeout=10 -qt=" & t & " " & d & " " & n Set objCmd=objWShell.Exec(cmdline) nslookup=objCmd.StdOut.Readall() set objCmd = nothing set objWShell=nothing end function |
注意看nslookup后面的参数,第一个是超时时间10秒,第二个是查询类型,第三个是域名地址,第四个是指定服务器(可选项)。
下面是支持的查询类型:
删除任意文件,删除顽固文件
我电脑F盘有个Ghost.. 文件夹,想尽办法都删不掉,无意思中看到这个脚本,一试果然有效,估计其他难删的也是轻而易举了,比如有时候虚拟主机中毒了也是建些删不掉的文件夹。
使用方法是将以下两行代码另存为A.bat文件,然后将要删的文件或文件夹拖到此文件图标上。
DEL /F /A /Q \\?\%1
RD /S /Q \\?\%1