文章关键字 ‘VBScript’

用VBS精确计算2的100次方

2010年10月27日,星期三

即Grade school multiplication(小学乘法?)算法的VBS实现。既然Python可以计算2的100次方,那么我就要用VBS实现。不过这个效率嘛,计算2的10000次方Python用了0.009013秒,VBS用了120.9805秒,不是一个等级的,我就不多说什么了。

直接上代码: (更多…)

VBScript的结束,Python的开始

2010年10月24日,星期日

第一次接触VBScript是大一第一个学期期末,那时候刚买电脑不久,由于某种需要(现在已经记不得了)装了个按键精灵。按键精灵的帮助文档中有一部分是VBS教程(可以在按键精灵论坛上找到),其中第一个程序类似于

MsgBox "Hello world"

现在看来当然没什么,但是当时我刚刚初学完C语言,写来写去都是一个黑黑的console窗口。现在在记事本里写一行代码,保存为VBS,连编译都不需要,竟然能够弹出一个GUI对话框,足以让我觉得VBS是如此的强大。

那个教程写得实在是太简单,看完依然摸不着头脑,于是到网上到处搜索所谓的VBS教程,无奈看完仍旧似懂非懂。后来花了一个寒假的时间啃完英文版《Microsoft VBScript Step by Step》,VBS才总算有点入门。于是从此之后鄙视一切所谓的“教程”。

算起来,学VBS的时间也不短了,玩腻了,而且也很久没有学习新的语言了。貌似最近Python很流行,“只有你想不到,没有 Python 做不到”,听起来很牛逼的样子,我也赶一下潮流吧

用VBS播放音乐

2010年10月23日,星期六

昨天我们院赢了,晚上一起吃饭,喝了好多酒,一觉睡到下午2点才醒。头痛欲裂,想到好久没有听过音乐了,于是听听音乐,都是些很久以前的歌曲,会让我想起那些很久以前的事的歌曲。

也想到我很久以前用VBS写的播放器。(当然没有下面的那么简单,有GUI界面)

Dim wmp
Set wmp = CreateObject("WMPlayer.OCX")
wmp.URL = "just one last dance.mp3"
Do Until wmp.playState = 1
    WScript.Sleep 1000
Loop

VBS的SendKeys,你真的懂吗?

2010年10月21日,星期四
Dim WshShell
Set WshShell = CreateObject("Wscript.Shell")

如果你认为你懂,请说出运行下列每个语句的效果。

WshShell.SendKeys Chr(&H88AC)
WshShell.SendKeys Chr(&H88AD)
WshShell.SendKeys Chr(&H88AE)
WshShell.SendKeys Chr(&H88AF)
WshShell.SendKeys Chr(&H88B4)
WshShell.SendKeys Chr(&H88B5)
WshShell.SendKeys Chr(&H88B6)
WshShell.SendKeys Chr(&H88B7)

其实SendKeys方法我一直都很少用,因为总觉得模拟键盘太不靠谱,无法保证没有异常发生。今天闲来没事在中国DOS联盟无意中看到一个帖子,发现SendKeys还有那么多鲜为人知的秘密。

曾经搜到过一篇名为《Mute Sound Volume in WSH》的文章,说的是用VBS让系统静音,用的就是SendKeys方法。当时很疑惑文章中的&hAD是怎么得到的,而今天看到的这个帖子让我豁然开朗。

不要以为看完参考手册就天下无敌,要知道人外有人,天外有天。

参考链接:VBS中奇妙的中文……

VBS图片处理之用VBS缩放图片大小

2010年10月20日,星期三

用到WIA中的Scale滤镜

Dim Img 'As ImageFile
Dim IP 'As ImageProcess
Set Img = CreateObject("WIA.ImageFile")
Set IP = CreateObject("WIA.ImageProcess")
Img.LoadFile "test.jpg"
IP.Filters.Add IP.FilterInfos("Scale").FilterID
IP.Filters(1).Properties("MaximumWidth") = 100
IP.Filters(1).Properties("MaximumHeight") = 100
Set Img = IP.Apply(Img)
Img.SaveFile "test.jpg"

参考链接:Scale Filter: Resize an Image