“程序设计”目录存档

InputBox与两数相加——一个简单的VBS脚本问题

2011年03月9日,星期三

一个昵称为预言家晚报的朋友很喜欢玩SOSO问问,等级LV10,已经算比较高了。晚上挂QQ的时候,看到他的问问有更新,就点进去看了一下,问题是:

我写了如下一段VBS

dim a,b,c
a=inputbox("a","please input")
b=inputbox("b","please input")
c=a+b
msgbox(c)

可是最后结果是11,我知道肯定是倒数第二行的“+”没有作为运算符,请问这段代码该咋么写才正确?

你肯定会不屑一顾,切,那么简单的程序,谁不会?那请你先别往下看,独立写出这个程序,看看到底对不对。注意我的标题是两数相加,而不是两整数相加。

(更多…)

在InternetExplorer.Application中显示本地图片

2011年02月19日,星期六

很久以前的问题了,一直没解决,今天无意中搜到了答案。

在InternetExplorer.Application对象中显示远程服务器上的图片是没有问题的:

Dim IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "about:blank"
IE.Document.write "<img src='https://demon.tw/demon.gif' />"
IE.Visible = True

然而,在IE默认的设置下,却无法显示本地图片:

(更多…)

对VBS效率的再思考——处理二进制数据

2011年02月16日,星期三

那天无意中搜到一篇名为《我为什么喜欢VBS和C?》的文章,里面引用了《VBS和C语言效率比较》中的程序。

Option Explicit
Dim begin_time,end_time,elapse_time
Dim str,length,i,c
Dim ado,fso,file
begin_time = Timer
Set ado = CreateObject("adodb.stream")
Set fso = CreateObject("scripting.filesystemobject")
Set file = fso.OpenTextFile("foo.txt",2,True)
ado.Type = 1
ado.Open
ado.LoadFromFile("foo.jpg")
str = ado.Read
length = LenB(str)
For i = 1 To length
    c = AscB(MidB(str,i,1))
    file.WriteLine c & "," & "_"
Next
ado.Close
end_time = Timer
elapse_time = end_time - begin_time
WScript.Echo elapse_time

时隔半年多再看这段代码,实在没有什么效率可言。正如有人在《用VBS读写二进制文件》中的回复:

(更多…)

用C语言实现IBindStatusCallback接口

2011年02月14日,星期一

昨天在Google关键字“URLDownloadToFile IBindStatusCallback”的时候,看到了看雪论坛上一个名为《在C中怎么使用IBindStatusCallback接口里的方法》的帖子。有人给出了C++的实现,有人留了一句“这样比较麻烦,但是可以实现”,却没有代码。

如果说Linux是C的天下,那么Windows就是C++的天下了。曾经有人问我,在Windows下C++比C方便得多,你为什么偏要用C?我回答,不为什么,因为我喜欢。

和COM开发有关的C语言资料真的很少,但并不是没有,Jeff Glatt的神作《COM in plain C》是最好的资料。把《COM in plain C》看完,实现IBindStatusCallback接口只是小菜一碟。

(更多…)

VB调用URLDownloadToFile函数下载文件(带进度条)

2011年02月13日,星期日

今天有个朋友问我VB调用API函数URLDownloadToFile可不可以获取已下载的大小,也就是如何获取下载的进度。

根据MSDN文档,调用函数时要提供第5个参数,即一个指向IBindStatusCallback接口的指针,才能获取下载进度。我对VB也只是略知一二,仅限于与VBS共通的部分,当然不知道用VB怎么实现IBindStatusCallback接口,只好Google了。

Google了半天,总算找到了靠谱点的答案。一篇名为《使用了IBindStatusCallback的URLDownloadToFile函数》的文章,引用如下:

hoho,不好意思搬了一下MSDN。关于这个函数的VB实现,网上已经有很多例子了,不过这些例子都没有使用最后一个参数。近日看到CSDN上有兄弟提问,于是便花了一些时间做了个下载的例子。如果有什么不懂的地方请跟帖…… ^_^

原网站的SEO好像做得不是很好,比较难搜索到(要学会用不同的关键字)。不过代码是很好的,喜欢VB的朋友可以下载来看一下,应该会有所收获。至少对我这样的VB菜鸟而言,里面有好多东西都第一次见过,惭愧。都说VB很简单,但是真正精通的人,又有几个?