

回复 1# 的帖子
关于VB调用DOS命令[原创]
大家在用VB的时候,有的时候难免需要调用DOS命令来完成,但是在调用某个DOS命令的时候,如果这个命令在个别的计算机上不能执行,会导致我们的程序崩溃而强行关闭程序,
//有这么严重么?不能执行的原因要么是文件不存在,文件不能执行,或者是没有权限之类的原因,用on error goto捕捉处理错误,不是不会吧?
这样的话我们的程序在应用者看来就有点缺陷,应用者也不知道什么原因导致的。
//err.description 错误描述
当然你可以在代码前加“on error resume next”这个代码,遇到错误转到下一步,这样的话也不是很好的啊,如果你程序必需代用DOS命令依赖windows功能来完成的话,你这个功能就无法实现了,
//可以检查一个err.number是不是0就知道是否成功调用了
大家会问:"在自己的机器上都可以执行这个DOS命令,其他的机器就怎么不能执行呢?",比如我们要执行一个DOS命令为arp -a ,那如果C\:\windows\system32\arp.exe这个文件被删除或没权限,你是不是不能执行这个命令?那怎么样才让执行DOS命令是出错我们程序会有返回提示或自定义提示呢?
//在捕捉错误之后提示err.description不就行了?
我以前编过VBS脚本,后来我想到了一个代码,我写的代码是这样的,只是给大家一个思路的哦,代码如下:
Private Sub Command1_Click()
On Error GoTo ts: '如果错误跳到ts:
Set wshl = CreateObject("wscript.shell")
wshl.run "arp -a", 0, True 'arp -a是要执行的DOS命令,0隐藏cmd窗口, 1显示cmd窗口
//这个和shell命令一样,都是异步执行的,就是vb线程运行到这里以后不会挂起,而是建立一个新的进程来运行DOS命令,vb线程继续执行下一步操作。如果需要DOS命令的输出结果就需要重定向DOS的输出,异步与同步获取结果。
MsgBox "命令执行完成!", vbInformation, "完成"
exit sub
ts:
MsgBox "命令执行失败!", vbCritical, "失败"
//msgbox "命令执行失败!" + “错误号:”+cstr(err.number)+vbcrlf+err.description
End Sub
希望用到的朋友顶下呀!QQ:200606698 绝对原创。