网上教程-让我们共同学习VBS

上传人:nu****n 文档编号:103046838 上传时间:2022-06-08 格式:DOC 页数:7 大小:25.51KB
返回 下载 相关 举报
网上教程-让我们共同学习VBS_第1页
第1页 / 共7页
网上教程-让我们共同学习VBS_第2页
第2页 / 共7页
网上教程-让我们共同学习VBS_第3页
第3页 / 共7页
点击查看更多>>
资源描述
网上教程 - 让我们共同学习VBS 来源: 兄弟工作组按键精灵讨论区(欢迎大家来讨论)作者: redorange标题: 让我们共同学习VBS现在看到很多朋友都不明白VBS,但我也没有时间全部写完,所以一天写一些,边写边和大家交流,也希望有朋友能接着写或指出我的错误。今天我就从总体上对VBS进行介绍,希望能给大家一个直观的印象。另外,讲解与按键官网的按键精灵教程(李悦制作)相结合,帮大家看懂这个东东。一、概述要让计算机做事情就必须由人给它指令。原来的指令很复杂,都是些0011001之类的东西,后来逐渐简化,指令也更接近于人类的语言。VBS(Microsoft(R) Visual Basic(R) Scripting)也是高级语言的一种,和其他高级语言相比,它有简单易学的特点,是电脑初学者涉足编程领域的良好入口。如果说从低级语言进化到高级语言是人类控制计算机的战略问题,那么具体的设置变量、循环就是控制计算机的具体战术问题。我们现在学习的也就是用VBS让计算机为我们工作的战术。二、从最简单的东西入手。网络叫卖脚本:vbs ivbs i=10while i0SayString 卖XXX,价格面议。vbs i=i-1delay 10000endfor看到这个脚本很多人就嗤之以鼻了,实现不断叫卖的方法很多,有的比这个脚本简单几倍。但随着讲解的进行,我们会发觉VBS提供给我们的是一个强大的工具。下面先来这几行都是什么意思。vbs i /告诉计算机有个叫i的变量。vbs i=10 /这个变量为10while i0 /当这个变量大于0的时候就执行下面直到看见第一个endfor的地方。SayString 卖XXX,价格面议。 /按键语句:输出文字vbs i=i-1 /这个变量减去1,然后又把减1后的数作为i的值。delay 10000 /按键语句:暂停10秒(10000毫秒)endfor /回到while处效果:叫卖10次后就结束。现在我要花点力气解释一下为什么要折腾出这么多麻烦的东西。变量的用处和重要性其实这个程序完全可以写成SayString 卖XXX,价格面议。delay 10000SayString 卖XXX,价格面议。delay 10000重复N次SayString 卖XXX,价格面议。delay 10000其实再复杂的程序段都能被还原成顺序的程序,用很多复杂的东东不是为了显示编程能力,而是为了给自己方便。当我们一直卖XXX的时候可能没有什么感觉,但当我们卖YYY的时候呢?要全部改过吗?或者我们要重复1000次,后来只重复500次了,难道要认真地数500下,然后删除后面的吗?当然,我们编这个小程序改起来还比较惬意。但要提高发展就得做大程序,还必须要依靠我们的变量朋友。变量其实是一个字符代号,象你我的名字一样,为的是把各个变量区别开来,让他们分头工作。为变量取名字的时候可以用数字、字符、和下划线,但不可以用汉字、空格和其它奇奇怪怪的符号,另外数字不能用于第一个字符。在使用变量之前要先写一个象vbs i这样的语句,意思是现在本人指派一变量,取名为i,参加到这个程序运行中。其实你可以不用履行这样的报名程序,直接在程序的某处使用i,但实践证明这是一个不好的习惯,让你写大程序的时候寸步难行。然后vbs i=10则告诉程序,这个变量i现在的值为10,以后凡是用到i的地方,就相当于是10在那里。比如vbs j=i+1其实就相当于j=10+1,所以j的值为11。变量的魅力不仅在于它可以代替数字,而且还可以代替字符,但和数字比起来,字符有其特殊性。比如:vbs i=字符vbs j=串接vbs a=i & j此时a就是字符串接。注意这里出现的两个新符号:号和&符号。可能有人已经猜出来他们的作用了。号之间的内容为字符。电脑对vbs i=10和vbs i=10有着截然不容的理解。&号为字符串接号。如果a=j & i,那么a就是串接字符。知道了变量的用法后,我们就可以把叫卖程序改得更有趣。比如我们想让程序说不同的话,先说10次卖XXX,再说10次卖YYY。那我们就可以写成:vbs ivbs i=10while i0ifexpression i5SayString 卖YYY,价格面议。endifvbs i=i-1delay 10000endfor其实我们用了个编程的小技巧,就是用变量i的大小控制程序的走向。可见前5次卖YYY,后5次卖XXX。或者我们先叫XXX一次,再叫YYY一次,然后重复前面的动作:vbs ivbs i=10while i0ifexpression i mod 2 = 0SayString 卖XXX,价格面议。endififexpression i mod 2 = 1SayString 卖YYY,价格面议。endifvbs i=i-1delay 10000endfor这里也用了一个用i控制程序运行的方法。mod是和+、-、*一样的运算符号,作用是取余数。如10 mod 2 = 0的意思是10除以2,其余数是0。同样9 mod 2 = 1,8 mod 2 = 0,7 mod 2 = 1,6 mod 2 = 0,5 mod 2 = 1哎呀,暂时写到这里。先说长变量名的问题。和人名一样,人少的时候,用一个字还行,比如尧、舜、禺。人多了就必须用多一点字了,比如帕尔多帕契夫斯基。今后为了阅读程序的方便,还是多写几个字吧。vbscall 和 vbs 一样都是标志。前者表示将用一个函数。至于什么是函数,可以看以后的帖子。现在先解释一下函数是什么。如果还没有忘记数学的话我们应该知道函数就是x-y的一种关系(映射)。即特定的x一定会得到特定的y,而不是相同的x,前后两次计算得到不同的y。VBSCall GetCursorPos(y,h)stdlib.vbs可以看成三部分。VBSCall是标志,提醒电脑这句话是个按键精灵的函数。stdlib.vbs可以不用管他,通常理解为函数库头文件名称。将来也许会出现其他的比如iostring.vbs。这个文件在按键精灵安装文件夹的script文件夹里。最重要的就是中间的GetCursorPos(y,h)了。我们会发现所有VBSCall打头的句子都是中间的这部分不一样。还记得数学里函数是怎么表示的吗?f(x)=y或者是f(x)=一串计算式,比如ax2+bx+c。f的意思是founction(函数)的头字母,在计算机里f可以是这个函数的名字,比如GetCursorpos(是get cursor position,得到鼠标位置的意思。瞧这里也涉及到取名的问题,这个名字是不是取得不错,比起只有一个两个字母的名字,这个名字既直观又相对较短)。x自然就是括号里的东西,有时我们有几个x,他们就用,号隔开。比如GetCursorPos(y,h)的第一个x是变量y,第二个x是变量h。这时,你会发现少了f(x)=y中的y,也就是特定的x对应的特定的y。在这里有y,但对本函数来说已经不重要了,我们需要的是函数把y变成鼠标的横坐标值,h变成鼠标的纵坐标值。实际上这里不是真正意义上的函数,从函数库stdlib.vbs中来看,这里的所谓函数其实是QMDispatch.QMFunction对象的一个方法。算了,这个问题以后再说。同样的道理,FindColor(y-200,h-200,y+200,h+200,ffaa8c,g,k)有七个x,要做的工作是在前四个x的范围内找到第五个x指定的颜色值,把发现第五个x指定值的颜色点的x坐标放到第六x,y坐标放到第七个x。f(x)=y中的y就不管了。FindColor的前四个参数组成一个小于等于屏幕的方框,查询的颜色就在这个小方框内进行。依次代表屏幕左边到寻色方框左边框的距离,上边到寻色方框上边的距离,左边到寻色方框右边的距离,上边边到寻色方框下边的距离。注意上下左右都是怎么说的。如果是0,0,1,1的话,说明是左上角一个像素点范围内查询。如果是0,0,800,600的话,说明是800*600这么大快区域。至于什么是像素点,请看我的签名处提到的那个帖子。dim 不是变量。是VBS的保留字,保留字的意思是VBS语言的一部分,不能被用户作为变量、函数的名字。dim的意思是提醒计算机它后面跟的是将来要用的变量,可以不写。 我们从1楼知道了变量的重要性,现在总结一下。变量在汇编语言(低级语言)的时候就已经出现了。现在到了VBS这样的高级语言,变量将发挥更重要的作用。作用1:替代数字或字符。在程序里有些数字或字符会用到很多次,编辑和修改的时候一次要改很多,而且容易漏掉某些地方。现在我们先用变量把他们定义了,让变量代替他们到程序里去折腾,将来编辑修改时会很方便。方便的后果是,你的程序更不容易出错。作用2:参加运算。这是变量之所以叫“变”的原因。它能随时被赋予新的含义。但需要注意的是,你的变量原来是数字的最好不要中途变成了字符或者相反的变换。这会让电脑不知所措的。具体的原因等你学习了更多的东西自然就知道了。另外字符的运算只能是连接,就是&号,使前后两字符串连接在一起。同时数字与字符不能在一起运算。幸运的是我上面说的那么多禁止的地方很多都是老皇历了。在VBS里有些禁忌是无所谓的。比如数字和字符,VBS会根据运算符号来确认到底参加运算的应该看成数字好还是看成字符好。i=10和i=10有时候VBS分的不是那么清楚,它会根据是+还是&来判断结果应该是什么。作用3:控制程序走向。通过1楼,我们看到了最后的两个叫卖脚本。它通过条件的不同来产生不同的叫卖效果。这里的效果实际上是程序根据不同的条件走向了不同的地方。前一个例子是我们通过变量的大小来决定叫卖哪一句,后一个例子是我们通过变量除以2的余数来决定叫卖哪一句。这一贴我们着重说一说用变量来控制程序的走向。电脑读脚本如同我们读书一样。注意:这里我们写的东西确实是程序,却老是说成脚本。这里先解释一下:一般我们说的程序是直接能被电脑运行的文件。比如Qmacro.exe文件。当我们双击它的时候按键精灵就跳出来了。你尝试过将这个文件用记事本打开吗?其实记事本可以打开任何文件。打开后,我们会发现很多乱七八糟的符号,这些符号是只有计算机才能读懂的。我们能读懂的并且计算机能直接运行的(只是看起来是直接可以运行)只有脚本,即Script。试验过用记事本打开程序文件后千万不要改动并保存啊,改了一小点都不能运行了。好了,只需要记住,电脑读脚本和我们读脚本没什么两样。只是它读的比我们快,并且是以行作为读取单位。电脑是一边读脚本一边按照脚本的意思来执行命令。既然如此,我们在写脚本的时候就能充分发挥我们的文学细胞,运用插叙、倒叙、顺序、注释等多种写法来完成我们的脚本。电脑里大概有注释、顺序、选择序、循环序和跳转序几种读脚本的方法。先说注释。注释的作用是让读者更明白文中的意思。脚本里的注释有点不一样,电脑可不需要什么注释,它只负责按命令执行。我们在脚本中加入注释的目的是为了自己方便。比如我们的程序写长了,这时可以在脚本里加入点注释,提醒自己谁谁谁是干什么的。加入方法:Rem 注释语句。程序在遇到Rem 的时候就视而不见了。但后面我会告诉你,电脑还是看得见用Rem 打头的语句的。注释使我们能控制电脑哪句可以执行,哪句不能。比如你修改你的脚本的时候,原来的那句话也许将来还能用上,于是你在添加新语句的时候不必将原来的删除,而是在它前面直接加上注释的Rem 。这样程序就不执行了,而且将来好改动。次说顺序。其实只要没有什么特殊的情况电脑都会老老实实按顺序读下去。这就没有什么多讲的了。再次说选择序。很奇怪,电脑看脚本有时候还真有些不求甚解,它可以根据你的命令有选择读一些语句,而放弃读一些语句。这有利于我们控制它按我们的意思根据不同情况来行动。而不同的情况其实很大程度上说的是变量的情况。比如变量是否大于10。要实现选择序,我们就先要判断一下条件。在按键精灵里只有一个语句负责判断。ifexpression。这个语句是if expression(如果表达式是否为真)的意思。这里解释一下什么叫表达式,其实也没有什么解释的必要,就是算式。但这里的算式比数学算式的含义多得多。除了1+1=2,1+2=3什么的;还包括变量参与的运算,比如a+1b,b+210就看a和b运行到此的值是多少了。只有一个变量a呢?当a的值为0时,就不成立,当a不为0时就成立。另外说一下VBTURE和VBFALSE是什么东东。其实就是1和0。作用是便于阅读和防止冒失鬼把用于判断的变量中途放到其他算式里去参加运算,使原变量值改变了。1楼的最后两个脚本都是通过ifexpression来控制程序走向,产生不同效果。可见ifexpression 1这个语句永远成立。ifexpression 0永远不成立。当然我们也可以用ifexpression VBTRUE来实现永远成立。ifexpression 1+1=2永远成立,ifexpression 1+1=3永远不成立。具体格式:ifexpression 表达式中间语句(可以又有一到N个ifexpression和while)endif然后我们说循环序。和选择序一样,它也要作一个判断;与之不同的是循环序是在判断了后面的表达式是否为真后执行到第一个endfor语句,然后又回到原来判断的那个语句,再判断一次,如果成立,又执行下面的。这样一直循环下去,直到有一天它发现判断表达式不成立了,脚本就接着endfor后面的语句执行。比如while 1这个语句就会无限循环下去。在1楼的第一个脚本就是通过循环语句来实现不断叫卖,而且通过变量大小能控制脚本叫卖多少次。具体格式:while 表达式中间语句(可以又有一到N个ifexpression和while)endfor最后说跳转序。一个是Goto 标记。意思是当读到这句时就到标记处继续执行。这里的标记其实是我们第一个介绍的老朋友Rem注释语句。比如前面你写了Rem aa后面就可以用Goto aa来实现回到Rem aa这一行来继续执行。另一个是Gosub 子程序标记。意思是当读到这句时就到子程序标记处继续执行。当读到第一个Return语句时回到Gosub那一句。子程序标记是Sub 。这个东东最好以后再说。以上所有的控制语句,都可以在按键精灵编辑窗口左边的“控制动作”一栏找到。以后我们进一步说表达式成立到底是什么意思,以及子程序是什么东东,它和函数有什么关系。确切的讲,子程序和跳转如同插叙一样,或者说是“下转xxx页”。和跳转不一样的是,跳转会直接运行下去,而子程序到了return 语句的时候会回到调用这个子程序的地方,接着下一句继续运行。子程序的作用可以将程序分成明显的几个功能块,便于你调试、阅读。这在写大程序或者和别人合作写一个脚本的时候特别有用。比如你本人写找矿程序,当找到矿后调用“移动到矿边”子程序。这时你可以让你的朋友来写这个子程序。或者让你的程序显得更有逻辑性。另外,子程序和函数的区别也很简单。子程序其实是一段脚本,你可以在不同的地方重复执行这一段脚本。函数是一个关系映射。函数有x和y,即通过特定的x来得到特定的y,而子程序不存在这些。但他们都可以被看成是一个功能模块。子程序和函数的更深层次的区别是对待变量的不同态度。子程序是一段脚本,和调用它的主程序是一家人。适用于主程序的变量同样适合于子程序(特别注意:这句话仅适用于按键精灵脚本)。函数则和调用它的主程序是两家人,相互不承认对方的家庭成员(变量)。要想在主程序和函数之间共用变量,就必须经过传递这一道手续。我们写在函数名后面括号内的变量或数字、字符就是履行发送任务,在函数内部,要履行接收任务。不过请放心,在按键精灵脚本里没有必要写自己的函数。我们只需要用好按键精灵提供给我们的函数,比如findcolor。但看了前面的说明,你应该明白,在findcolor等函数后面括号里的参数顺序和大小是多么重要。等把什么是表达式成立讲清楚后,VBS基本上就可以用来写脚本了。前面的都是些死记硬背的东西,后面将讲一些编程技巧,然后用一个识别数字脚本的整个产生过程来总结这些技巧。现在你去看官网上的那个关于VBS的教程应该可以轻松一点了。先前我们讲了函数,那么我们就只看那个教程里第五个题目函数。这时你会发现VBS为我们准备了些什么好礼物。名词解释:返回值:其实就是特定x输入后得到的特定y。这个y可以赋予给变量。比如:Abs取绝对值函数。Dim MyNumberMyNumber = Abs(50.3 ) 返回 50.3。MyNumber = Abs(-50.3) 返回 50.3。同样,你可以用到三角函数、时间函数、字符处理系列函数等等。VBS为我们提供了一个强大的功能函数模块,尽情使用吧。至于什么是方法,留待以后再说。多说一句,方法是对象的一个动作。(头晕了吗?听我慢慢讲)我先前说计算机读脚本想人读书,这种情形是从上到下的一个程序执行过程,无论有多少循环和跳转,其实都是一个依一定逻辑规则的执行过程。这被称为面向过程的程序设计。另外有一种程序设计思想叫面向对象的程序设计,即程序编写者将逻辑思维转变成形象思维,把万事万物看成对象,这些对象有属性和行为。比如花,它的属性有红色、白色等,有大、小等,有各种形状;同时当一定条件来临时花会按自身的规律发生变化,比如春来花开,秋到花谢等。我们把属性仍叫属性,把行为叫方法。在VBS里有7个对象。详见官网VBS教程第7个目录:对象。目前来看对我们最有用的是FileSystemObject 对象。那一串英文翻译过来时“文件系统对象”的意思。也就是说,VBS将文件系统看成是一个东西,这个东西有自己的属性和行为方式。我们可以利用它的属性或者让它按照我们的要求做一些事情。多的以后再说。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 电气技术


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!