VBS中没有vbHide常量

标签: , , , ,

在某些不明真相的同学眼中,VBS的作用似乎仅限于隐藏批处理的黑窗,于是网上流传着类似于这样的代码:

Dim WshShell
Set WshShell = CreateObject("Wscript.Shell")
WshShell.Run "cmd /c test.bat", vbHide

假设test.bat的代码如下:

start http://demon.tw

那么就可以隐藏运行批处理达到打开Demon博客的目的。不要笑,很多只会批处理的人就是这么做的。

且不说批处理能实现的VBS都能实现,完全没有用VBS运行批处理必要。就单单看上面那段VBS吧,vbHide是什么东西?VBS内置常量?遗憾的是,VBS中并没有vbHide常量(见《VBS内置常量大全》)。

如果你在怀疑我的正确性,那么可以测试下面的代码:

vbHide = "http://demon.tw"
vbCrLf = "Demon's Blog"

vbCrLf是内置常量,对常量进行赋值会导致运行时错误:非法赋值: ‘vbCrLf’;而对vbHide赋值时VBS并没有抱怨什么,很高兴的运行了。

回过头来,为什么上面的VBS能够隐藏窗口呢?因为vbHide被当成了变量,由于没有赋值,默认值为0。

顺便提一下,在VB里面是有vbHide常量的,一般在Shell函数中使用:

Private Sub Command1_Click()
    Shell "notepad.exe", vbHide
End Sub

在网上经常有人说,VBS完全没有必要学,学会VB,VBS自然也就懂了。虽然两者在语法上很类似,但是VBS毕竟是VB的子集,两者在某些细节上还是存在差别的。懂VB不见得懂VBS,懂VBS不见得懂VB。

所以上面那段VBS应该是某个只懂VB的人写的,然后被一群不经过大脑的人抄来抄去。最后说一句,网上流传的垃圾代码很多,抄之前请自行斟酌,否则只会显得你很无知。

随机文章:

  1. 利用WMI打造完美“三无”后门-U盘侦测与Autorun
  2. 在C语言程序中使用cURL库(libcurl)
  3. VBS Scripting.Dictionary字典对象按键名Key进行冒泡排序
  4. JScript编辑器JsEdit
  5. 为OpenWrt编译Shadowsocks-libev

2 条评论 发表在“VBS中没有vbHide常量”上

  1. prophetk说道:

    – – 比较喜欢用true

  2. maz-1说道:

    正常,大部分技术内容的博客都是东抄抄西抄抄

留下回复