精华内容
下载资源
问答
  • VBS脚本的GUI界面——HTA简明教程

    千次阅读 2015-08-26 13:21:20
    原来网页中的工具栏、地址栏以及菜单栏在这个窗口里都没有被显示出来,还可以使用html中的绝大多数标签、脚本等,这就给予你对界面设计更多的控制权。(天哪,当我看到这句话的时候,心情是多么的激动,

    HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,双击就能运行,与VB、C++等程序语言所设计的软件没什么差别。原来网页中的工具栏、地址栏以及菜单栏在这个窗口里都没有被显示出来,还可以使用html中的绝大多数标签、脚本等,这就给予你对界面设计更多的控制权。(天哪,当我看到这句话的时候,心情是多么的激动,这不是专为vbs脚本设计的gui界面吗?)


    与普通HTML网页相比,它多了HTA:APPLICATION标签,其实就是这个标签提供了一系列面向应用程序的功能,这个特殊的标签,允许你控制这个应用程序的用户界面(UI)。<HTA:APPLICATION>标签位于<HEAD>标签里,它允许你控制诸如是否在所含的窗口里显示一个标题栏,或者显示最大最小化按钮。<HTA:APPLICATION>标签还让你能够访问客户的机器而不用担心安全的限制。

    对象:HTA:APPLICATION—必要的标记。

    表示这个HTML文档是HTA应用对象模型

    Applicationname属性—设置HTA的名称

    Borde属性—设置窗口边框类型,默认值为thick

    thick

    指定窗口为粗边框

    dialog window

    指定窗口为对话框

    none

    指定窗口无边框

    thin

    指定窗口为窄边框

    BorderStyle属性—设置窗口的边框格式,默认值为 normal

    normal

    普通边框

    complex

    凹凸格式组合边框

    raised

    凸出的3D边框

    static

    3D边框

    sunken

    凹进的3D边框

    Caption属性—设置窗口是否显示标题栏或标题,默认值为 yes

    Icon属性—设置应用程序的图标。

    MaximizeButton属性—设置是否在窗口中显示最大化按钮,默认值为 yes

    MinimizeButton属性—设置是否在窗口中显示最小化按钮,默认值为 yes

    ShowInTaskBar属性—设置是否在任务栏中显示此应用程序,默认值为yes

    SingleInstance属性—设置此应用程序是否同时只能运行一次。

    此属性以ApplicationName属性作为标识,默认值为 no

    SysMenu属性—设置是否在窗口中显示系统菜单,默认值为 yes

    Version属性—设置应用程序的版本,默认值为空。

    WindowState属性—设置窗口的初始大小,默认值为 normal

    normal

    默认大小

    minmize

    最小化

    maximize

    最大化



    PS:

    HTA虽然用HTML、JS和CSS编写,却比普通网页权限大得多。它具有桌面程序的所有权限(读写文件、操作注册表等)。HTA本来就是被设计为桌面程序的。


     

    展开全文
  • 让VBS脚本也有GUI图形界面

    万次阅读 2012-03-24 17:01:30
    set ie=wscript.createobject("internetexplorer.application","event_") '创建ie对象' ie.menubar=0 '取消菜单栏' ie.addressbar=0 '取消地址栏' ie.toolbar=0 '取消工具栏' ie.statusbar=0 '取消状态栏' ...
    set ie=wscript.createobject("internetexplorer.application","event_") '创建ie对象'
    ie.menubar=0 '取消菜单栏'
    ie.addressbar=0 '取消地址栏'
    ie.toolbar=0 '取消工具栏'
    ie.statusbar=0 '取消状态栏'
    ie.width=400 '宽400'
    ie.height=400 '高400'
    ie.resizable=0 '不允许用户改变窗口大小'
    ie.navigate "about:blank" '打开空白页面'
    ie.left=fix((ie.document.parentwindow.screen.availwidth-ie.width)/2) '水平居中'
    ie.top=fix((ie.document.parentwindow.screen.availheight-ie.height)/2) '垂直居中'
    ie.visible=1 '窗口可见'

    with ie.document '以下调用document.write方法,'
    .write "<html><body bgcolor=#dddddd scroll=no>" '写一段html到ie窗口中。'
    .write "<h2 align=center>远程清除系统日志</h2><br>"
    .write "<p>目标IP:<input id=ip type=text size=15>" '也可以用navigate方法直接打开一'
    .write "<p>用户名:<input id=user type=text size=30>" '个html文件,效果是一样的。'
    .write "<p>密码: <input id=pass type=password size=30>"
    .write "<p align=center>类型:" '不仅是input对象,所有DHTML支持'
    .write "<input id=app type=checkbox>应用程序 " '的对象及其属性、方法都可以使用。'
    .write "<input id=sys type=checkbox>系统 "
    .write "<input id=sec type=checkbox>安全" '访问这些对象的办法和网页中访问'
    .write "<p align=center><br>" '框架内对象是类似的。'
    .write "<input id=confirm type=button value=确定> "
    .write "<input id=cancel type=button value=取消>"
    .write "</body></html>"
    end with

    dim wmi '显式定义一个全局变量'
    set wnd=ie.document.parentwindow '设置wnd为窗口对象'
    set id=ie.document.all '设置id为document中全部对象的集合'
    id.confirm.οnclick=getref("confirm") '设置点击"确定"按钮时的处理函数'
    id.cancel.οnclick=getref("cancel") '设置点击"取消"按钮时的处理函数'

    do while true '由于ie对象支持事件,所以相应的,'
    wscript.sleep 200 '脚本以无限循环来等待各种事件。'
    loop

    sub event_onquit 'ie退出事件处理过程'
    wscript.quit '当ie退出时,脚本也退出'
    end sub

    sub cancel '"取消"事件处理过程'
    ie.quit '调用ie的quit方法,关闭IE窗口'
    end sub '随后会触发event_onquit,于是脚本也退出了'

    sub confirm '"确定"事件处理过程,这是关键'
    with id
    if .ip.value="" then .ip.value="." '空ip值则默认是对本地操作'
    if not (.app.checked or .sys.checked or .sec.checked) then 'app等都是checkbox,通过检测其checked'
    wnd.alert("至少选择一种日志") '属性,来判断是否被选中。'
    exit sub
    end if
    set lct=createobject("wbemscripting.swbemlocator") '创建服务器定位对象'
    on error resume next '使脚本宿主忽略非致命错误'
    set wmi=lct.connectserver(.ip.value,"root/cimv2",.user.value,.pass.value) '连接到root/cimv2名字空间'
    if err.number then '自己捕捉错误并处理'
    wnd.alert("连接WMI服务器失败") '这里只是简单的显示“失败”'
    err.clear
    on error goto 0 '仍然让脚本宿主处理全部错误'
    exit sub
    end if
    if .app.checked then clearlog "application" '清除每种选中的日志'
    if .sys.checked then clearlog "system"
    if .sec.checked then clearlog "security" '注意,在XP下有限制,不能清除安全日志'
    wnd.alert("日志已清除")
    end with
    end sub

    sub clearlog(name)
    wql="select * from Win32_NTEventLogFile where logfilename='"&name&"'"
    set logs=wmi.execquery(wql) '注意,logs的成员不是每条日志,'
    for each l in logs '而是指定日志的文件对象。'
    if l.cleareventlog() then
    wnd.alert("清除日志"&name&"时出错!")
    ie.quit
    wscript.quit
    end if
    next

    end sub


    原文出处:http://blog.csdn.net/zshwlw/article/details/2474485

    展开全文
  • VBScript 基础知识

    千次阅读 2018-05-22 17:37:46
    VBScript 你要创建一个变量,并将变量名称跟在其后。申明多个同类型变量,可以用逗号分隔。注意: VBScript 中不允许在申明变量的时候同时给变量赋值。但是允许在一行代码内同时对两个变量进行赋值,中间用冒号分隔...
    

    1.     VBS介绍

    VBS是一种Windows脚本,全称是 : Microsoft Visual Basic ScriptEdition.

    VBSVisualBasic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。

    Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对COM对象的简便支持。那么什么是COM对象呢?

    COM对象就是一些具有特定函数功能项程序模块,他们一般以ocx或者dll作为扩展名,你只要找到包含有你需要的功能的模块文件,并在脚本中规范的引用,就可以实现特定的功能,也就是说Vbs脚本就是调用现成的“控件”作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等等麻烦


    2.   如何开始编写

    Hello Word 程序

    打开你的“记事本”程序,在编辑窗口填写:

    msgbox "Hello World!"

    然后用鼠标单击“文件”菜单,单击“保存”,把“保存在”一栏设为桌面,在“文件名”一栏中填写kk.vbs,单击“保存”就可以了。然后最小化“记事本”窗口,在桌面上寻找你刚刚保存的kk.vbs,双击打开执行

    Msgbox语法:msgbox  "对话框内容", , "对话框的标题"

    Dimname

    name=Inputbox("请输入你的名字:","名称")

    Msgbox  name, ,"您的名字是"


    变量定义:

    Dim 变量1,变量2

    Vbs只有一种变量类型,所以不用声明变量类型。系统会自动分辨变量类型。

    inputboxVBS内建的函数,可以接受输入的内容,其语法格式为:

    Inputbox("对话框内容","对话框标题")

     

    3.     VBScipt基本语法(牢记)

     

    一. 变量

    1、所有单引号后面的内容都被解释为注释。

    2、在VBScript中,变量的命名规则遵循标准的命名规则,需要注意的是:在VBScript中对变量、方法、函数和对象的引用是不区分大小写的。在申明变量时,要显式地申明一个变量,需要使用关键字Dim来告诉VBScript你要创建一个变量,并将变量名称跟在其后。申明多个同类型变量,可以用逗号分隔。注意:VBScript中不允许在申明变量的时候同时给变量赋值。但是允许在一行代码内同时对两个变量进行赋值,中间用冒号分隔。

     

    3 你可以使用Option Explicit来告诉宿主变量必须先声明后使用。

    4VBScript定义时只有一种变量类型,在实际使用中需要使用类型转换函数来将变量转换成相应的变量类型。

    Cbool函数将变量转换成布尔值;

    Cbyte函数将变量转换为0255之间的整数。

    Ccur函数、Cdbl函数和Csng函数将变量转换为浮点数值,前者只精确到小数点后四位,后两者要更加精确,数值的范围也要大的多。

    Cdate函数将变量转换为日期值。

    Cint函数和Clng函数将变量转换为整数,后者的范围比前者要大的多。

    Cstr函数将变量转换为字符串。

    二、数组

     

    数组的定义与变量非常类似,只需要在变量后描述这个数组的个数和维数。需要注意的是:数组的下标总是从0开始,而以数组定义中数值减一结束。也就是说你以要定义一个有十个数据的数组,将这样书写代码:dImarray9),同样,当你要访问第五个元素时,实际的代码是array(4)。当然,你可以通过不指定数组的个数和维数来申明动态数组。等到数组的个数和维数固定后,使用关键字redim来改变数组。注意,在改变数组的大小时,数组的数据会被破坏,使用关键字preserve来保护数据。例如:

    RedIm空格preserve空格array括号个数逗号维数括号

     

    三、操作符

     

    VBScript运算符中,加减乘除都是我们常用的符号,乘方使用的是 ^ 取模使用的Mod

    在比较操作符中,等于、小于、大于、小于等于、大于等于都与我们常用的符号是一致的,而不等于是小于和大于连用(<>

    逻辑运算符为:和操作—>AND     非操作—>NOT     或操作—>OR

    你可以使用操作符 + 和操作符 & 来连接字符串,一般使用&操作符;

    另外还有一个比较特殊的操作符Is用来比较对象,例如按钮对象,如果对象是同一类型,结果就是真,如果对象不是同一类型,结果就是假。

     

    四、条件语句主要有if……then语句和select case语句两种形式

    if……then语句中,其基本形式为:

    If  条件  then

    处理条件的语句;

    ……

    Endif

    基本形式只能对单个条件进行验证,如果有两个条件,则需要在基本形式中添加单行语句else,如果还有更多的条件需要验证,则需要添加语句

    Elseif 条件 then

    处理条件语句

    select case语句中,其基本形式为:

    Select  case  变量

    Case  条件值

    处理条件语句

    并对上两句进行重复

    最后一句应为

    case  else

    处理语句

    当然不要忘记将条件结束语句End  select放在最后一行

    注意:在执行字符串比较时,需要特别注意大小写,一般情况下,我们在比较前,使用lcase函数将字符串转换成小写,使用ucase函数将字符串转换成大写

    五、循环控制语句

     

    循环控制语句有for……next循环、for……each循环、do……while循环、do……until循环、while循环五种形式。

    在使用循环控制语句前,首先要对循环条件进行判断,如果循环次数是有固定次数的,那么使用For……next循环,其结构为:

    For   计数器变量=开始计数值  to  最后计数值

    执行循环体

    Next

    如果是需要对数组或对象集合中的每一个元素进行判断,则需要使用for……each循环,其结构为:

    For  each  循环计数变量 in  要查看的对象或数组

    执行处理语句

    Next

    注意:在上述两种循环中随时可以使用exit  for来退出循环

    如果你希望在条件满足时执行一段代码则使用do……while语句,结构为:

    Do  while  条件

    执行循环体

    Loop

    如果你希望在条件不满足时执行代码,则使用do……until语句,结构为:

    Do until 条件

    执行循环体

    Loop

    当然,在这两种循环语句中,你可以使用exit  do来退出循环

    最后一种循环语句是条件满足时一直执行循环,

    While  条件

    执行循环体

    Wend

     

    六、使用过程

     

    常用的过程有两种,一种为函数,给调用者返回值,一种为子程序,无返回值,还有一种叫事件的特殊子程序,用的比较少。

    函数的基本定义方法为:

    Function  函数名称(参数列表)

    函数代码

    函数名称=某值 ‘用来返回值

    end  function

    子程序一些都类似,不过没有返回值

    注意:尽管在定义子程序的时候,参数列表要加括号,但在调用子程序的时候,参数列表不加括号,括号只在函数中使用。另外,子程序不能在表达式中使用。

    而函数只能出现在赋值语句的右边,或者表达式中,函数不能直接使用,如果必须直接使用函数,则必须使用call语句调用,并取消返回值。

     

    4.     如何利用VBS运行外部程序

     

    Vbs只提供了编程的一个基本框架,用户可以使用Vbs来定义变量、过程和函数,vbs也提供了一些内部函数和对象,但是Vbs没有提供任何命令来访问Windows系统内部的部件,但是值得庆幸的是,Vbs虽然不能自己完成这些任务,但是它提供了一条极为方便、功能也相当强的命令——CreateObject这条命令可以访问windows系统内安装的所有com对象,并且可以调用这些部件中存放的命令。

     

    WSH也就是用来解析Vbs的宿主,本身包含了几个个常用对象:

    1Scripting.FileSystemObject  提供一整套文件系统操作函数

    2Scripting.Dictionary  用来返回存放键值对的字典对象

    3Wscript.Shell  提供一套读取系统信息的函数,如读写注册表、查找指定文件的路径、读取DOS环境变量,读取链接中的设置

    4Wscript.NetWork  提供网络连接和远程打印机管理的函数。(其中,所有Scripting对象都存放在SCRRUN.DLL文件中,所有的Wscript对象都存放在WSHOM.ocx文件中。)

     

    Option Explicit

    Dim objShell

    Set objShell =CreateObject(“Wscript.Shell”)

    objShell.Run “notepad”

    1. SetVbs指令,凡是将一对象引用赋给变量,就需要使用set关键字。那么什么是对象引用呢?凡是字符串、数值、布尔值之外的变量都是对象引用

      Objshell是变量名,可以随意修改。

       

    2. 凡是正确引用的对象,其本身内置有函数和变量,其引用方法为在变量后加. ,后紧跟其实现功能的函数就可以了。Objshell.run的意思就是调用Wscript.shell中的运行外部程序的函数——runnotepad是记事本程序的文件名。当然你也可以改成“calc”,这是计算器的文件名,winwordword的文件名,等等吧,所有可执行文件的文件名都可以。但是需要注意的是,如果你要执行的可执行文件存放的地方不是程序安装的常用路径,一般情况下,需要提供合法的路径名,但是run在运行解析时,遇到空格会停止,解决的方法是使用双引号

      例如:在我的机器上运行qq,代码为

      objshell.run """C:\ProgramFiles\QQ2006\QQ.exe"""  ‘注:三个引

       

      总结:run函数有三个参数,

    1. 第一个参数是你要执行的程序的路径

    2. 第二个程序是窗口的形式,0是在后台运行;1表示正常运行;2表示激活程序并且显示为最小化;3表示激活程序并且显示为最大化;一共有10个这样的参数我只列出了4个最常用的。

    3. 第三个参数是表示这个脚本是等待还是继续执行,如果设为了true,脚本就会等待调用的程序退出后再向后执行

      其实,run做为函数,前面还有一个接受返回值的变量,一般来说如果返回为0,表示成功执行,如果不为0,则这个返回值就是错误代码,可以通过这个代码找出相应的错误。

       

    5.      错误处理

     

    引发错误的原因有很多,例如用户输入了错误类型的值,或者脚本找不到必需的文件、目录或者驱动器,我们可以使用循环技术来处理错误,但是VBS本身也提供了一些基本技术来进行错误的检测和处理。

    1、最常见的错误是运行时错误,也就是说错误在脚本正在运行的时候发生,是脚本试图进行非法操作的结果。例如零被作为除数。在vbs中,任何运行时错误都是致命的,此时,脚本将停止运行,并在屏幕上显示一个错误消息。你可以在脚本的开头添加

    On  Error Resume  Next 

    这行语句告诉vbs在运行时跳过发生错误的语句,紧接着执行跟在它后面的语句。

    发生错误时,该语句将会把相关的错误号、错误描述和相关源代码压入错误堆栈。

    2、虽然On Error Resume Next语句可以防止vbs脚本在发生错误时停止运行,但是它并不能真正处理错误,要处理错误,需要在脚本中增加一些语句,用来检查错误条件并在错误发生时处理它。

    vbscript提供了一个err对象,他有两个方法clearraise5个属性:descriptionhelpcontexthelpfilenumbersource

    err对象不用引用实例,可以直接使用,例如:

    on error resume next

    a=11

    b=0

    c=a/b

    if err.number<>0then

    wscript.echo err.number& err.description  & err.source

    end if 

    属性
    Description           错误信息的说明
    HelpContext           帮助文件主题的上下文 ID,初始值 0
    HelpFile              
    错误信息的帮助文件

    Number                错误信息的代码,。初始值 0
    Source               
    错误信息的对象



    方法
    Clear                清除所有错误信息
    Raise                主动设置一个错误信息

     

    6.      修改注册表

    Vbs中修改注册表的语句主要有:

     

    1、读注册表的关键词和值:

    可以通过把关键词的完整路径传递给wshshell对象的regread方法。例如:

    set ws=wscript.createobject("wscript.shell")

    v=ws.regread("HKLM\Software\7-Zip\Path")

    wscript.echo v

    2、写注册表

    使用wshshell对象的regwrite方法。例子:

    path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"

    setws=wscript.createobject("wscript.shell")

    t=ws.regwrite(path& "jj","hello")

    这样就把

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\jj这个键值改成了hello.不过要注意:这个键值一定要预先存在。

    如果要创建一个新的关键词,同样也是用这个方法。

    path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\run\sssa2000\love\"

    setws=wscript.createobject("wscript.shell")

    val=ws.regwrite(path,"nenboy")

    val=ws.regread(path)

    wscript.echoval

     

    3、删除关键字和值

    使用regdelete方法,把完整的路径传递给regdelete就可以了

    例如

    val=ws.regdel(path)

    注意,如果要删除关键词的值的话 一定要在路径最后加上“\”,如果不加斜线,就会删除整个关键词。

     

    7.   FSO的常见对象和方法

    文件系统是所有操作系统最重要的部分之一,脚本经常会需要对文件及文件夹进行访问和管理,在Vbs中对桌面和文件系统进行访问的顶级对象是FileSystemObject(FSO),这个对象特别复杂,是vbs进行文件操作的核心。此节内容应了如指掌。

    FSO包含的常见对象有:

      1. Drive对象:包含储存设备的信息,包括硬盘、光驱、ram盘、网络驱动器

      2. Drives集合:提供一个物理和逻辑驱动器的列表

      3. File  对象:检查和处理文件

      4. Files集合:提供一个文件夹中的文件列表

      5. Folder对象:检查和处理文件夹

      6. Folders集合:提供文件夹中子文件夹的列表

      7. Textstream对象:读写文本文件

        FSO的常见方法有:

      1. BulidPath:把文件路径信息添加到现有的文件路径上

      2. CopyFile:复制文件

      3. CopyFolder:复制文件夹

      4. CreateFolder:创建文件夹

      5. CreateTextFile:创建文本并返回一个TextStream对象

      6. DeleteFile:删除文件

      7. DeleteFolder:删除文件夹及其中所有内容

      8. DriveExits:确定驱动器是否存在

      9. FileExits:确定一个文件是否存在

      10. FolderExists:确定某文件夹是否存在

      11. GetAbsolutePathName:返回一个文件夹或文件的绝对路径

      12. GetBaseName:返回一个文件或文件夹的基本路径

      13. GetDrive:返回一个dreve对象

      14. GetDriveName:返回一个驱动器的名字

      15. GetExtensionName:返回扩展名

      16. GetFile:返回一个file对象

      17. GetFileName:返回文件夹中文件名称

      18. GetFolder:返回一个文件夹对象

      19. GetParentFolderName:返回一个文件夹的父文件夹

      20. GetSpecialFolder:返回指向一个特殊文件夹的对象指针

      21. GetTempName:返回一个可以被createtextfile使用的随机产生的文件或文件夹的名称

      22. MoveFile:移动文件

      23. MoveFolder:移动文件夹

      24. OpenTextFile:打开一个存在的文件并返回一个TextStream对象

         

    8. FSO中文件夹的基本操作

     

          1 使用fso

    由于fso不是wsh的一部分,所以我们需要建立他的模型

    例如set fs=wscript.createobject(scripting.filesystemobject)

    这样就建立了fso的模型。如果要释放的话也很简单,setfs=nothing

    2、使用文件夹

    在创建前,我们一般需要检查该文件夹是否存在例如:

    dim fs,s //定义fss两个变量

    setfs=wscript.createobject(scripting.filesystemobject)//fsFSO实例

    if (fs.folderexists(c:\temp))then //判断c:\temp文件夹是否存在

    s=”is available”

    else

    s=”not exist”

    set foldr=fs.createfolder(c:\temp)//不存在则建立

    end if 

    删除 set fs=wscript.createobject(scripting.filesystemobject)

    fs.deletefolder(“c:\windows”)

     

    拷贝: set fs=wscript.createobject(scripting.filesystemobject)

    fs.copyfolder “c:\data” “d:\data”

    注意:如果c:\data d:\data都存在,脚本会出错,复制也就会停止,如果要强制覆盖,使用fs.copyfolderc:\data d:\data”,true

     

    移动 set fs=wscript.createobject(scripting.filesystemobject)

    fs.movefolder “c:\data” “d:\data”

     

    我们可以使用通配符,来方便操作:

    例如, fs.movefolder :c:\data\te* , d:\working

    注意:在目的路径最后没有使用“\ 也就是说我没有这样写:

    fs.movefolder c:\data\te*” ,“d:\working\”

    这样写的话,如果d:\working 目录不存在,windows就不会为我们自动创建这个目录。

     

    注意:上面我们所举的例子都是在利用fso提供的方法,如果使用folder对象也完全是可以的:

    set fs=wscript.createobject(“scripting.filesystemobject”)

    set f=fs.getfolder(“c:\data”)

    f.delete //删除文件夹c:\data。如果有子目录,也会被删除

    f.copy d:\working,true   //拷贝到d:\working

    f.move d:\temp   //移动到d:\temp

     

    3、特殊文件夹

    一般指的就是系统文件夹:\windows\system32 临时文件夹,windows文件夹,在前几篇的时候,我们提过一下:例如

    setfs=wscript.createobject(“scripting.filesystemobject”)

    setwshshell=wscript.createobject(“wscript.shell”)

    osdir=wshshell.expandenvironmentstrings(“%systemroot%”)

    set f =fs.getfolder(osdir)

    wscript.echo f

    当然,还有简单的方法 那就是使用getspecialfolder()

    这个方法使用3种值:

    表示windows文件夹,相关常量是windowsfolder

    系统文件夹,相关常量是systemfolder

    临时目录,相关常量temporaryfolder

    例如:

    setfs=wscript.createobject(“scripting.filesystemobject”)

    set wfolder=fs.getspecialfolder(0) ‘返回windows目录

    set wfolder=fs.getspecialfolder(1) ‘返回system32\

    set wfolder=fs.getspecialfolder(2)'返回临时目录

    Vbs脚本编程简明教程之九——1

    妙用SendKeys简化重复操作1

     

    每次开机的时候,你想自动登陆你的QQ或者博客吗?巧妙使用VBS中的SendKeys命令(这个命令的作用就是模拟键盘操作,将一个或多个按键指令发送到指定Windows窗口来控制应用程序运行),可以极大的方便我们的常用操作。其使用格式为:

    Object.SendKeys string其中:

    Object:为WshShell对象,即脚本的第一行为:

    SetWshShell=WScript.CreateObject("WScript.Shell") 

    Object替换为WshShell

    string”:表示要发送的按键指令字符串,需要放在英文双引号中。它包含如下内容:

    1.基本键

    一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如要发送字母“x”,使用“WshShell.SendKeys "x"”即可。当然,也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可,例如,要发送按键“cfan”,可以使用

    WshShell.SendKeys "cfan"”。

    2.特殊功能键:

    对于需要与ShiftCtrlAlt三个控制键组合的按键,SendKeys使用特殊字符来表示:

    Shift   ——  +

    Ctrl   ——  ^

    Alt   ——  %

    如要发送的组合按键是同时按下CtrlE,需要用“WshShell.SendKeys "^e"”表示,

    如果要发送的组合按键是按住Ctrl键的同时按下EC两个键,这时应使用小括号把字母键括起来,书写格式为“WshShell.SendKeys "^(ec)",这里要注意它与“WshShell.SendKeys "^ec"”的区别,后者表示组合按键是同时按住CtrlE键,然后松开Ctrl键,单独按下“C”字母键。

    由于“+”、“^”这些字符用来表示特殊的控制按键了,如何表示这些按键呢?

    只要用大括号括住这些字符即可。例如,要发送加号“+”,可使用“WshShell.SendKeys "{+}"”。另外对于一些不会生成字符的控制功能按键,也同样需要使用大括号括起来按键的名称,例如要发送回车键,需要用“WshShell.SendKeys "{ENTER}"表示,发送向下的方向键用

    WshShell.SendKeys "{DOWN}"表示。

    如果需要发送多个重复的单字母按键,不必重复输入该字母,SendKeys允许使用简化格式进行描述,使用格式为“{按键 数字}”。例如要发送10个字母“x”,则输入“WshShell.SendKeys "{x 10}"即可。

    例一:WshShell.SendKeys"^{ESC}u"

    代码的含义为:按下CtrlEsc组合键(相当于按Win键)打开“开始”菜单,接着按U键打开“关机”菜单。

    例二:让VBS脚本自动在记事本中输入一行文字“hello, welcome to cfan”。

    Dim WshShell

    Set WshShell=WScript.CreateObject("WScript.Shell")

    WshShell.Run "notepad"

    WScript.Sleep 2000  

    //本行的含义为是脚本暂停2秒,给notepad一个打开的时间,有时时间太短可能导致后面的字符无法进入编辑区

    WshShell.AppActivate "无标题 - 记事本

    "//AppActivate为寻找可执行程序的标题框,”无标题-记事本”内容你的自己打开看一下

    WshShell.SendKeys "hello, welcome to cfan"



    Vbs脚本编程简明教程之九——2

    妙用SendKeys简化重复操作2

     

    例三:制作能自动定时存盘的记事本

    我们最常用的记事本没有WordWPS那样的自动定时存盘功能,其实利用VBS脚本再加上SendKeys命令,就能弥补这个遗憾。打开记事本,输入以下内容(为容易描述和分析,把代码分为四个部分):

    '第一部分:定义变量和对象

    Dim WshShell, AutoSaveTime,TXTFileName

    AutoSaveTime=300000

    SetWshShell=WScript.CreateObject("WScript.Shell")

    TXTFileName=InputBox("请输入你要创建的文件名(不能用中文和纯数字)")

    '第二部分:打开并激活记事本

    WshShell.Run"notepad"

    WScript.Sleep 200

    WshShell.AppActivate "无标题 - 记事本"

    '第三部分:用输入的文件名存盘

    WshShell.SendKeys"^s"

    WScript.Sleep 300

    WshShell.SendKeysTXTFileName

    WScript.Sleep 300

    WshShell.SendKeys"%s"

    WScript.Sleep AutoSaveTime

    '第四部分:自动定时存盘

    While WshShell.AppActivate(TXTFileName)=True

    WshShell.SendKeys"^s"

    WScript.Sleep AutoSaveTime

    Wend

    WScript.Quit

    将其保存为记事本.vbs,以后要使用记事本时,都通过双击这个脚本文件来打开。

    程序说明:这个脚本的基本思路是定时向记事本发送CtrlS这个存盘组合键。

    第一部分:定义了脚本中需要用到的变量和对象。“AutoSaveTime”变量用来设置自动存盘间隔,单位为毫秒,这里设置为5分钟。“TXTFileName”变量通过输入框取得你要创建的文本文件名称。

    第二部分:运行记事本,对于Windows本身提供的程序,比如计算器等,可直接在“WshShell.Run”后输入程序名称,如"calc",对于非系统程序,则可输入完全路径,但要注意使用8.3格式输入,比如“"D:\Progra~1\Tencent\QQ.exe"”。

    第三部分:这里用SendKeys命令执行了这样的操作流程(请注意每个操作之间延时命令的使用):在记事本中按CtrlS组合键→弹出保存文件的窗口→输入文件名→按AltS组合键进行保存(默认保存在“我的文档”目录)。

    第四部分:定时存盘的关键,通过“While……Wend”这个当条件为“真”时循环命令,实现自动存盘代码“WshShell.SendKeys "^s"”和定时代码“WScript.Sleep AutoSaveTime”的重复执行。因为不能让这个定时存盘循环一直执行,退出记事本后,必须自动退出脚本并结束循环,所以设计了一个循环判断条件“WshShell.AppActivate TXTFileName=True”,当记事本运行中时,可以激活记事本窗口,这个条件运行结果为“True”,定时存盘循环一直执行,退出记事本后,脚本无法激活记事本窗口,就会跳出循环,执行“Wend”后面的“WScript.Quit”退出脚本。

    例四:快速登陆QQ软件。假设QQ号码是:10001,密码是:123456,隐身登陆

    setws=wscript.createobject("wscript.shell")

        ws.run"C:\Progra~1\Tencent\QQ\QQ.exe",0

        wscript.Sleep 2000

        ws.AppActivate "QQ用户登录"

        ws.SendKeys "7015247"

        wscript.Sleep 200

        ws.SendKeys "{TAB}"

        ws.SendKeys "*********"

        wscript.Sleep 200

    ws.SendKeys"{ENTER}"

    例五:关机菜单立刻显身

    打开记事本,输入以下命令,并将其保存为1.vbs

    set WshShell =CreateObject("WScript.Shell")

    WshShell.SendKeys "^{ESC}u"

    双击运行它,你会发现关机菜单立刻出现了。

    将“WshShell.SendKeys"^{ESC}u"”改为“WshShell.SendKeys "^+{ESC}",运行一下看看是否打开了任务管理器

     

     Vbs脚本编程简明教程之九——3

    妙用SendKeys自动上网并登陆博客3

    将下面的脚本复制到一个文本文件中,并将其文件名命名为:自动登陆.vbs,然后将拨号软件及本脚本一起复制到程序——启动项中,就可以实现自动拨号上网,并登陆到博客上。

    代码如下:

    Set wshshell=CreateObject("wscript.shell")

    wshshell.AppActivate "连接 MAE-301U 拨号连接"

    wscript.Sleep 20000

    wshshell.SendKeys"{enter}"

    wshshell.Run"iexplore"

    WScript.Sleep 2000

    wshshell.AppActivate"hao123网址之家---实用网址,搜索大全,尽在http://www.hao123.com/ - Microsoft Internet Explorer" '引号中的内容修改为你的浏览器打开后标题栏中的内容

    wshshell.SendKeys"%d"

    wshshell.SendKeys"http://passport.baidu.com/?login"

    wshshell.SendKeys"{enter}"

    WScript.Sleep 2000

    wshshell.SendKeys "此处修改为博客帐号"

    wshshell.SendKeys"{tab}"

    wshshell.SendKeys "此处修改为博客密码"

    wshshell.SendKeys"{enter}"

    'wshshell.SendKeys"%d"

     

    Vbs脚本常用的编辑器当然是notapad,不过这个编辑器的功能当然实在是太弱了一点,其实有很多的专用的脚本编辑器可以大大方便vbs脚本的编写。我常用的有两种:

    1VBSEDit汉化版

     

    2primalscript汉化版,可以对30多种脚本进行编辑

     

    Vbs脚本编程简明教程之十一

    FSO中文件的基本操作

     

    一、文件属性:

    windows中,文件的属性一般用数字来表示:

    0代表normal,即普通文件未设置任何属性。  1代表只读文件。

    2代表隐藏文件。  4代表系统文件。   16代表文件夹或目录。

    32代表存档文件。 1024代表链接或快捷方式。例如:

    setfs=wscript.createobject(“scripting.filesystemobject”)

    setf=fs.getfile(“d:\index.txt”)

    msgbox f.Attributes  attributes函数的作用是显示文件属性

    需要说明的是:msgbox显示的结果往往不是上面说明的数字,而是有关属性代表数字的和

    二、创建文件object.createtextfile方法,注意创建前一般需要检查文件是否存在。

    例如:setfso=wscript.createobject(scripting.filesystemobject)

    iffso.fileexists(“c:\kk.txt”) then

    msgbox “文件已存在”

    else

    setf=fso.createtextfile(“c:\kk.txt”)

    end if

    如需要强制覆盖已存在的文件,则在文件名后加true参数。

    三、复制、移动、删除文件:使用copyfile方法、movefile方法、deletefile方法。例如:

    setfso=wscript.createobject(“scripting.filesystemobject”)

    fso.copyfile c:\kk.txt,d:\1\kk.txt,true  //如上文说述,true代表强制覆盖

    fso.movefile c:\kk.txt, d:\ //移动文件

    fso.deletefile c:\kk.txt //删除文件

    四、文件的读写:

    1、打开文件:使用opentextfile方法

    如:setts=fso.opentextfile(c:\kk.txt,1,true)

    说明:第二个参数为访问模式1为只读、2写入、8为追加

    第三个参数指定如文件不存在则创建。

    2、读取文件:read(x)x个字符;readline读一行;readall全部读取

    如:setffile=fso.opentextfile(c:\kk.txt,1,true)

    value=ffile.read(20)

    line=ffile.readline

    contents=ffile.readall

    3、常见的指针变量:

    atendofstream属性:当处于文件结尾的时候这个属性返回true。一般用循环检测是否到达文件末尾。例如:

    do whileffile.atendofstream<>true

    ffile.read(10)

    loop

    atendofline属性:如果已经到了行末尾,这个属性返回true

    Column属性(当前字符位置的列号)line属性(文件当前行号):在打开一个文件后,行和列指针都被设置为1

    4、在文件中跳行:skip(x) 跳过x个字符;skipline  跳过一行

    5、在文件中写入字符:可以用2-写入和8-追加的方式来写入

    其方法有:write(x)写入x字符串;writeline(x)写入x代表的一行

    writeblanklines(n) 写入n个空行

    注意:最后一定要使用close方法关闭文件,读文件后一定要关闭,才能以写的方式打开。

     

     

    Vbs脚本编程简明教程之十二

     

    使用系统对话框

     

    VBS脚本设计中,如果能使用windows提供的系统对话框,可以简化脚本的使用难度,使脚本人性化许多,很少有人使用,但VBS并非不能实现这样的功能,方法当然还是利用COM对象。

    1SAFRCFileDlg.FileSave对象:属性有:FileName 指定默认文件名;FileType 指定文件扩展名;OpenFileSaveDlg 显示文件保存框体方法。

    2SAFRCFileDlg.FileOpen 对象:FileName 默认文件名属性;OpenFileOpenDlg 显示打开文件框体方法。

    3UserAccounts.CommonDialog对象:Filter 扩展名属性("vbs File|*.vbs|All Files|*.*");

    FilterIndex 指定

    InitialDir 指定默认的文件夹

    FileName 指定的文件名

    Flags 对话框的类型

    Showopen方法:

    很简单,ok,让我们来举两个简单的例子:

    例一:保存文件

    Set objDialog =CreateObject("SAFRCFileDlg.FileSave")

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    objDialog.FileName ="test"

    objDialog.FileType =".txt"

    intReturn =objDialog.OpenFileSaveDlg

    If intReturn Then

    objFSO.CreateTextFile(objDialog.FileName& objdialog.filetype)

    Else

    Wscript.Quit

    End If

    注意:1SAFRCFileDlg.FileSave对象仅仅是提供了一个方便用户选择的界面,本身并没有保存文件的功能,保存文件还需要使用FSO对象来完成。2、用FileType属性来指定默认的文件类型。3、在调用OpenFileSaveDlg方法时,最好把返回值保存到一变量中,用它可以判断用户按下的是确定还是取消。

    例二:.打开文件

    set objFile =CreateObject("SAFRCFileDlg.FileOpen")

    intRet =objFile.OpenFileOpenDlg

    if intret then

    msgbox “文件打开成功!文件名为:” & objFile.filename

    else

    wscript.quit

    end if

    例三:比较复杂的打开文件对话框

    Set objDialog =CreateObject("UserAccounts.CommonDialog")

    objDialog.Filter = "vbsFile|*.vbs"

    objDialog.InitialDir ="c:\"

    tfile=objDialog.ShowOpen

    if tfile then

    strLoadFile =objDialog.FileName

    msgbox strLoadFile

    else

    wscript.quit

    end if

    说明:在脚本中加入 objDialog.Flags = &H020 看看会出现什么结果

    Vbs脚本编程简明教程之十三——1

     

    WMI基础之一

     

    WMIWindows 管理规范,是用户管理本地和远程计算机的一种模型。通过它可以访问、配置、管理和监视几乎所有的 Windows 资源。WMI的语法十分简单,基本上常见的命名空间、对象等用几乎一模一样。它对应的是Windows里的WMI服务(winmgmt)。

    一、WMI的起源

    几年前,几家资深的计算机公司由于系统管理领域缺少标准,委托DMTF启动了CIM(通用信息模型)项目,理想的CIM是一种不受限制于任何特定实现环境的管理工具。WMICIM的微软实现,它有很多类是从CIM中派生出来的。

    二、WMI的命名空间

    那么命名空间是做什么作用的呢?我简单这样说,在同一段代码中,如果有两个变量或函数的名字完全相同,就会出现冲突。命名空间就是为解决变量、函数的命名冲突而服务的。解决的办法就是将你的变量定义在一个不同名字的命名空间中。就好像财政局有个张三,公安局也有个张三,但我们清楚,就是因为他们分属不同的单位。有些地方可能不太准确,但大致意思就是这样了。

    WMI的命名空间创建了一个层次结构,有点类似于我们的目录文件结构。

    1 root-作为所有其他名字的占位符;

    2 root\default-与注册表操作有关的类;

    3 root\security-与系统安全有关的类;

    4 root\cimv2-CIM派生的类,代表我们最常用的工作环境。

    三、WMI的对象路径

    WMI的对象路径用来在CIM库中定位类和它的事例,对象路径用两个反斜杠\\开头,第一个元素是目标计算机的名字,第二个元素是相应的WMI命名空间,第三个元素是相应的类名,并用 将它与命名空间分隔开来。例如:\\..\root\cimv2:win32_service

    其中那个 . 代表是本地系统。

    四、WMI的查询语言——WQL仅仅是ANSI SQL的一个子集,只能用于数据的提取。

    数据、事件查询的基本语法为:

    Select pro1 , pro2 ,pro3  from myclassmyclassevent

    例如:Select name, path from Win32_share  说明:列出所有共享的名称和路径

    也可以使用通配符 * ,例如:Select * from Win32_share

    关键字Where 用于限定查询的范围。

    例如:Select *from Win32_share where name=Admin

    五、WMI脚本中使用的三个步骤

    步骤 1:连接到 WMI 服务

    在任何 WMI 脚本中,第一个步骤都是建立一个到目标计算机上的 Windows 管理服务的连接。方法是调用 VBScript Getobject 函数并将 WMI 脚本库的名字对象的名称(即“winmgmts:”,后跟目标计算机的名称)传递到 Getobject,并返回一个对象的引用,此时,您就可以调用其提供的方法如:InstancesOf,正如方法名所示,InstancesOf 返回由资源的类名标识的托管资源的所有实例。

    步骤 2:检索 WMI 托管资源的实例

    一般采用WQL来实现。

    步骤 3:显示 WMI 托管资源的属性

    最后一个步骤是枚举 检索得到集合的内容。一般采用

    For each enum in  myclass

    ……

    Next       结构来实现。

    六、WMI 测试器 (wbemtest.exe)验证脚本执行结果

    现在,您对可用于浏览和查看CIM 的工具已经有了一些认识,让我们使用 WMI 测试器 (wbemtest.exe) 来检查 Win32_Process 类定义,以便从在您的本地计算机上运行的进程检索一些属性。

    1.打开一个命令提示,键入 C:\>wbemtest.exe,按下 Enter 来开始 WMI 测试器工具。请注意,大部分按钮在主 WMI 测试器窗口上是被禁用的,这说明此时您没有连接到 WMI

    2.单击 “连接”按钮 连接到本地或远程计算机上的 WMI 服务。显示“连接”对话框,它提供一个标记为 名称空间 的文本输入区域,该区域默认值为 root\default。将 名称空间 区域的值更改为 root\cimv2,单击“连接”对话框的 连接 按钮返回到主 WMI 测试器窗口。

    3.主窗口中左上角的命名空间标识符应该显示为 root\cimv2。请注意,所有的按钮现在都已启用,这说明在当前凭据环境下,您已经成功连接到本地主机上的 WMI。单击 枚举类别 打开“超类信息”对话框。

    4.在“超类信息”对话框中,不要填写 输入超类别名称 区域,单击 递归 选项,单击 确定 以枚举 root\cimv2 名称空间中定义的所有 CIM 类。

    请注意,列于“查询结果”对话框顶部的类是以两个下划线为开头的。这些是系统类。系统类是预定义的 CIM 类,支持内部 WMI 配置与操作,例如提供程序注册、命名空间安全性及事件通知等。现在,忽略系统类,向下滚动“查询结果”对话框直至看到以 CIM_ 开头的类。名称以 CIM_ 开头的类是由 DMTF 维护的核心与公共基类。继续向下滚动直至到达以 Win32_ 开头的类。 名称以 Win32_ 开头的类是 Microsoft 扩展类,表示 Windows 特定的托管资源。如果这是您第一次检查 root\cimv2 命名空间,您可能希望熟悉root\cimv2 命名空间中的类的完整集合,尤其是有 Win32_ 前缀的类。

    5.向下滚动“查询结果”对话框直至到达 Win32_Process 类,双击该类名打开 Win32_Process 对话框的对象编辑器。

    6.“对象编辑器”对话框显示被选定类的定义和实现的详细信息(属性和方法)。选择 Hide System Properties 复选框隐藏系统属性。剩余的 Win32_Process 属性表示您可以从在本地或远程计算机上运行的进程检索的信息。

    运行如下代码:

    strComputer ="."  

    Set wbemServices =Getobject("winmgmts:\\" & strComputer)

    Set wbemObjectSet =wbemServices.InstancesOf("Win32_Process")

    For Each wbemObject InwbemObjectSet

        WScript.Echo "Name:          " & wbemObject.Name      & vbCrLf & _

                     "   Handle:    " & wbemObject.Handle   & vbCrLf & _

                     "   Process ID: " &wbemObject.ProcessID

    Next

    7.在运行脚本之后,您可以用 WIMI 测试器验证脚本的结果。在 Win32_Process 对话框的对象编辑器中,单击 Instances。产生的查询结果对话框列出在计算机上运行的进程的实例。双击一个指定的进程实例,查看该实例的详细信息。

     

    Vbs脚本编程简明教程之十三——2

    WMI基础之二—阻止客人运行你不想运行的程序

     

     

    很多人都有这样的经验,刚刚装好的系统,让人运行了一些你不想他运行的程序,比如说QQ,又是聊天,又是下载表情,不过一会,流氓插件、病毒、木马已经盘踞了你的计算机,常常是忍痛将这个程序卸载,可是不知情的人很自觉的下载安装,使整个系统无法正常运行。

    其实用vbswmi结合起来,使你的计算机上有相应的程序安装,别人又无法运行起来太容易了,现在给出代码:

    On Error Resume Next    '忽略所有的错误

    Dim bag,pipe,honker,good

    Do

    good="."     '定义为本地计算机

    setbag=getobject("winmgmts:\\"& good&"\root\cimv2")     'l连接到cimv2命名空间

    setpipe=bag.execquery("select * from win32_process where name='qq.exe' orname='qqgame.exe' or name='winmine.exe'")    '看,这是我的计算机上不允许运行的程序,qqqqgamewinmine(扫雷)如果你还有其他的程序不允许运行,很简单,在其中添加 or name='你不允许运行的程序名'

    for each i in pipe

    i.terminate()

    msgbox "发现盗版系统,现已进行功能限制!" & vbcrlf & "请使用正版软件!",,"微软提示"   '此行其实可有可无,有这行只是为了免去怀疑

    next

    wscript.sleep 60000    '1分钟检测一次

    loop

    那么如果我自己想运行这些程序该怎么办呢,很简单,Ctrl+Alt+Del三个键齐按,打开windows任务管理器,在进程中结束Wscript.exewmiprvse.exe进程的运行就可以了

     

    Vbs脚本编程简明教程之十四

    使用dictionary对象

     

    VBS中存在一个特殊的对象-dictionnary,是一个集合对象。一般情况霞,我把这个特殊的集合想象为数组,可以使用其中内建的函数完成存储和操纵数据等基本任务,无须担心数据是在哪些行列,而是使用唯一的键进行访问或者是一个只能运行在内存中的数据库,并只有两个字段分别是:keyitem,在使用中,字段key是索引字段。

    setsdict=CreateObject("Scripting.Dictionary")

    sdict.add"a","apple"

    sdict.add"b","banana"

    sdict.add"c","copy"

    for each key in sdict.keys

    msgbox     "键名" &   key    & "" & " = " & sdict (key)

    next

    sdict.removeall

    这个脚本很简单,就是定义了一个dictionary 对象的实例sdict,并加入了三条数据,然后对每一条数据进行了枚举,最后,将对象的实例清空。

    Dictionary 对象的成员概要

    属性和说明

    CompareMode    设定或返回键的字符串比较模式

    Count     只读。返回 Dictionary 里的键/条目对的数量

    Item(key)  设定或返回指定的键的条目值

    Key(key)  设定键值

    方法和说明

    Add(key,item)  增加键/条目对到 Dictionary

    Exists(key)  如果指定的键存在,返回 True,否则返回 False

    Items()  返回一个包含 Dictionary 对象中所有条目的数组

    Keys()  返回一个包含 Dictionary 对象中所有键的数组

    Remove(key)  删除一个指定的键/条目对

    RemoveAll()   删除全部键/条目对

     

     

    Vbs脚本编程简明教程之十五——1

    VBS内置函数之一

     

    Abs 函数:返回数的绝对值。

    Array 函数:返回含有数组的变体。

    Asc 函数:返回字符串首字母的 ANSI 字符码。

    Atn 函数:返回数值的反正切。

    CBool 函数:返回已被转换为 Boolean 子类型的变体的表达式。

    CByte 函数:返回已被转换为字节子类型的变体的表达式。

    CCur 函数:返回已被转换为货币子类型的变体的表达式。

    CDate 函数:返回已被转换为日期子类型的变体的表达式。

    CDbl 函数:返回已被转换为双精度子类型的变体的表达式。

    Chr 函数:返回与指定的 ANSI 字符码相关的字符。

    CInt 函数:返回已被转换为整形子类型的变体的表达式。

    CLng 函数;返回已被转换为Long子类型的变体的表达式。

    Cos 函数:返回角度的余弦。

    CreateObject 函数:创建并返回对“自动”对象的引用。

    CSng 函数:返回已被转换为单精度子类型的变体的表达式。

    CStr 函数:返回已被转换为字符串子类型的变体的表达式。

    Date 函数:返回当前系统日期。

    DateAdd 函数:返回的日期已经加上了指定的时间间隔。

    DateDiff 函数:返回两个日期之间的间隔。

    DatePart 函数:返回给定日期的指定部分。

    DateSerial 函数:返回指定年月日的日期子类型的变体。

    Datevalue 函数:返回日期子类型的变体。

    Day 函数:返回日期,取值范围为 1 31

    Eval 函数:计算表达式并返回结果。

    Exp 函数:返回 e (自然对数的底) 的多少次方。

    Filter 函数:根据指定的筛选条件,返回含有字符串数组子集的、下限为 0 的数组。

    Fix 函数:返回数的整数部分。

    FormatCurrency 函数:返回的表达式为货币值格式,其货币符号采用系统控制面板中定义的。

    FormatDateTime 函数:返回的表达式为日期和时间格式。

    FormatNumber 函数:返回的表达式为数字格式。

    FormatPercent 函数:返回的表达式为百分数(乘以 100)格式,后面有 % 符号。

    GetObject 函数:返回从文件对“自动”对象的引用。

    GetRef 函数:返回对能够绑定到一事件的过程的引用。

    Hex 函数:返回一字符串,代表一个数的十六进制值。

    Hour 函数:返回表示钟点的数字,取值范围为 0 23

    InputBox 函数:在对话框中显式一提示,等待用户输入文本或单击按钮,并返回文本框的内容。

    InStr 函数:返回一个字符串在另一个字符串中首次出现的位置。

    InStrRev 函数;返回一个字符串在另一个字符串中出现的位置,但是从字符串的尾部算起。

     

    VBS内置函数之二

     

    Int 函数:返回数的整数部分。

    IsArray 函数:返回 Boolean 值,反映变量是否为数组。

    IsDate 函数:返回 Boolean 值,反映表达式能否转换为日期。

    IsEmpty 函数:返回 Boolean 值,反映变量是否已被初始化。

    IsNull 函数:返回 Boolean 值,反映表达式是否含有无效数据(Null)

    IsNumeric 函数:返回 Boolean 值,反映表达式能否转换为数字。

    IsObject 函数:返回 Boolean 值,反映表达式是否引用了有效的“自动”对象。

    Join 函数:返回通过连接许多含有数组的子串而创建的字符串。

    LBound 函数;返回指定维数数组的最小有效下标。

    LCase 函数:返回的字符串已被转换为小写字母。

    Left 函数:返回字符串最左边的指定数量的字符。

    Len 函数:返回字符串中的字符数或存储变量所需的字节数。

    LoadPicture 函数:返回图片对象。只用于 32 位平台。

    Log 函数:返回数的自然对数。

    LTrim 函数;返回去掉前导空格的字符串。

    Mid 函数:从字符串中返回指定数量的字符。

    Minute 函数:返回分钟数,取值范围为 0 59

    Month 函数:返回表示月份的数,取值范围为 1 12

    MonthName 函数:返回表示月份的字符串。

    MsgBox 函数:在对话框中显示消息,等待用户单击按钮,并返回表示用户所击按钮的数值。

    Now 函数:返回计算机的当前系统日期和时间。

    Oct 函数:返回表示该数八进制数值的字符串。

    Replace 函数:返回一字符串,其中指定的子串已被另一个子串替换了规定的次数。

    RGB 函数:返回代表 RGB 颜色值的数字。

    Right 函数:返回字符串最右边的指定数量的字符。

    Rnd 函数:返回随机数。

    Round 函数:返回指定位数、四舍五入的数。

    RTrim 函数:返回去掉尾部空格的字符串副本。

    ScriptEngine 函数:返回反映使用中的脚本语言的字符串。

    ScriptEngineBuildVersion 函数:返回使用中的脚本引擎的编译版本号。

    ScriptEngineMajorVersion 函数:返回使用中的脚本引擎的主版本号。

    ScriptEngineMinorVersion 函数:返回使用中的脚本引擎的次版本号。

    Second 函数:返回秒数,取值范围为 0 59

    VBS内置函数之三

     

     

    Sgn 函数:返回反映数的符号的整数。

    Sin 函数:返回角度的正弦值。

    Space 函数:返回由指定数量的空格组成的字符串。

    Split 函数:返回下限为 0 的、由指定数量的子串组成的一维数组。

    Sqr 函数:返回数的平方根。

    StrComp 函数:返回反映字符串比较结果的数值。

    String 函数:返回指定长度的重复字符串。

    StrReverse 函数:返回一字符串,其中字符的顺序与指定的字符串中的顺序相反。

    Tan 函数:返回角度的正切值。

    Time 函数:返回表示当前系统时间的“日期”子类型的“变体”。

    Timer 函数:返回时经子夜 1200 AM 后的秒数。

    TimeSerial 函数:返回含有指定时分秒时间的日期子类型的变体。

    Timevalue 函数:返回含有时间的日期子类型的变体。

    Trim 函数:返回去掉前导空格或尾部空格的字符串副本。

    TypeName 函数:返回一字符串,它提供了关于变量的变体子类型信息。

    UBound 函数:返回指定维数数组的最大有效下标。

    UCase 函数:返回的字符串已经被转换为大写字母。

    VarType 函数:返回标识变体子类型的数值。

    Weekday 函数:返回表示星期几的数值。

    WeekdayName 函数:返回表示星期几的字符串。

    Year 函数:返回表示年份的数值

     

     

    展开全文
  • 资源介绍:易语言调用vbscript实现弹出信息框资源作者:易语言入门自学资源界面:资源下载:
  • 网上书店,用javascript编写的ASP动态网页,各种应用模块齐全,图形界面很漂亮。
  • VBscript脚本语言

    2018-04-06 18:57:00
    VBScript语言概述  在ASP中,通过使用VBscript脚本语言编写程序代码,可以实现主要的功能模块。将VBscript程序嵌入到HTML中,制作出动态交互的Web页面,VBScript是程序开发语言Visual Basic的一个子集,为ASP默认...

    VBScript语言概述

      在ASP中,通过使用VBscript脚本语言编写程序代码,可以实现主要的功能模块。将VBscript程序嵌入到HTML中,制作出动态交互的Web页面,VBScript是程序开发语言Visual Basic的一个子集,为ASP默认的编程语言

      一、VBScript脚本语言的特点

    •   语言简单,易学易懂
    •   增强客户端功能、降低WEB服务器负荷。VBScript使得程序在将表单数据发送到服务器之前,就可以验证表单的数据,以进行相应处理,还可以动态的创建新的WEB内容,甚至可以编写完全在客户端运行的程序,并可以用于扩展客户端的功能
    •   可用于ASP程序设计。ASP提供了一个服务器端的脚本环境,应用VBScript语言可编写动态、交互、高效的应用程序。
    •   多种嵌入形式。开发者可以应用免费的VBScript脚本来编写程序。VBScript与IE浏览器是集成在一起的,VBScript和ActiveX空间也可以在应用程序中结合使用以实现特定的功能

      二、VBScript代码编写格式

      VBScript是VB语言的子集,他是专门为IE开发的编程语言,使用VBScript的目的是控制页面内容的动态交互性。使用VBScript可以编写服务器端脚本,也可以编写客户端脚本

      1.服务器端脚本编写格式

      服务器端脚本在服务器上执行,由服务器根据脚本的执行结果生成相应的HTML界面,发送到客户端。只有服务器端脚本才能实现真正的“动态网页“的功能。服务器端脚本的执行不受浏览器的限制,脚本在网页通过网络传送给浏览器之前被执行,WEB浏览器收到的只是标准的HTML文件

      在ASP程序中,编写服务器端脚本有两种方法。

      a.方法一:将脚本代码放在<%...%>标识符之中

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>服务器端脚本1</title>
    </head>
        <%
            dim num
            num=1
            if num <> 0 then response.Write("欢迎来到ASP编程世界")
        %>        
    <body>
    </body>
    </html>
    View Code

      b.方法二:将脚本代码放置在<script>...</script>标记之间

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>服务器端脚本2</title>
    </head>
        <script language="vbscript" runat="server">
            dim num
            num=1
            if num <> 0 then response.Write("欢迎来到ASP编程世界")
        </script>        
    <body>
    </body>
    </html>
    View Code

      2.客户端脚本编写格式

      客户端本由浏览器解释执行。由于客户端脚本随着HTML页面下载到客户端浏览器,在用户本地执行,因此其执行速度明显快于服务器端脚本。客户端脚本常用于做简单的客户端验证或实现网页特效等。

      客户端脚本的代码是写在<script></script>标记之间的。可以将编写完成的代码块放置在HTML文档中的任何位置。但是通常情况下,是在代码块放在<Head>标记之间的,以便查看和使用

      <script language="脚本语言" [event="事件名称"] [for="对象名称"]>

        <!--

          //脚本代码

        -->

      </script>

        language:用于指定脚本代码使用的语言

      event:用于指定脚本代码相关联的事件

      for:用于指定脚本代码相关联的对象

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>客户端脚本</title>
    <script language="VBSCRIPT" event="onClick" for="btn1">
        MsgBox "您单击了此按钮"
    </script>
    </head>
    <body>
    <input name="btn1" value="单击按钮" type="button" id="btn1"/>
    </body>
    </html>
    View Code

    注意:VBScript的MsgBox函数不能在服务器端脚本中使用,因为信息框是用户界面元素,不能在服务器端执行

    三、常量与变量

      常量与变量是VBScript的常见元素,本节介绍VBScript中常量、变量的声明和赋值以及如何确定变量的作用域和存活期

      1.VBscript常量

      常量是具有一定含义的名称,用于代替数值和字符串,在程序执行期间其值不会发生变化。常量可分为普通常量和符号常量。普通常量可以称为文字常量,它不必定义就可以在程序中使用,而符号常量则要以Const语句加以声明才能使用

      a.文字常量

      按照数据类型的不同,分为字符串常量、数值常量和日期时间常量

      字符串常量:主要是由一对双引号括起来的字符序列组成

      数值常量:分为整形常量、长整型常量和浮点型常量。其中整形常量和长整型常量可以用十进制、十六进制和八进制三种形式表示

      日期和时间常量::用一对#号括起来#2007-12-09 11:12:32#

      b.符号常量

      符号常量使用一个标识符表示的常量,用于代替数字和字符串,在程序执行期间其值不会发生变化。在VBScript中,可以通过关键字Const语句定义。分为预定义符号常量和用户自定义常量

      预定义常量:是在VBScript中建立的,并在使用之前不用定义的常量。在代码的任意位置都可以使用此常量所表示的说明值。例如:vbCr表示回车;Empty表示没有初始化之前的值

      用户自定义常量:通过Const语句来创建的。使用Const语句可以创建具有一定意义的字符串型或数值型常量,并赋予一个初始值。例如:Const PI=3.1415  Const OlympicsBJ=#2008-8-8#

      2.变量的声明和赋值

      变量是一种使用方便的占位符,主要用于引用计算机的内存来存储脚本运行时更改的数据类型。在VBScript中的变量不区分大小写。

      VBScript中声明 变量有两种方式,一种是显式声明,另一种是隐式声明

      显示声明:通过变量声明语句来声明变量,它可以在定义变量的时候为变量在内存中预留内存空间。声明语句包括Dim语句、public语句和private语句。一个声明语句可以声明多个变量,并应用逗号将多个变量分开

      ① 通过Dim语句声明变量

      Dim 变量名 [,变量名]

        <%
            dim i
            dim Conn,ConnStr,Rs,sqlStr
            dim array(10)
        %>
    View Code

      ② 通过public语句声明变量

      public 变量名 [,变量名]

      例如:public Standard

      ③ 通过Private语句声明变量

      private语句是用来声明私有变量的,声明的变量只能在声明它的脚本中使用

      private 变量名 [,变量名]

      隐式声明:因为在VBScript中只有一种数据类型,即遍体类型,所以在VBscript中使用一个变量前是无需声明的,可以直接在脚本代码中使用。当在程序运行过程中检测到该变量时,系统会自动在内存中开辟存储区域并登记该变量名。

      为了避免隐式声明时因写错变量名等一起的问题,在VBScript中提供了Option Explcit语句。强制声明会增加代码量,但可以提高程序的可读性,减少出错的机会,Option Explcit语句必须位于ASP处理命令之后、任何HTML文本或脚本命令之前。

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
        <%
            Option Explicit
        %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title></title>
    </head>
    <body>
        <%
            dim str
            str="sss"
        %>
    </body>
    </html>
    View Code

       3.变量的作用域和存活期

      ①变量的作用域:由声明的位置决定。分为脚本级变量和过程级变量

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>区分变量的作用域</title>
    </head>
    <body>
        <%
            dim str                '声明脚本级变量
            str="体育项目"        '赋值
            call GetResult()    '调用子过程
            Response.Write str    '输出变量的值
            
            '下面定义子过程
            sub GetResult()
            dim str                '声明过程级变量
            str="网球、乒乓球、足球..."
            end sub        
        %>
    </body>
    </html>
    View Code

    四、运算符的应用

      运算符是完成操作的一系列符号。VBScript中运算符包括算数运算符、连接运算符、关系运算符、逻辑运算符等几种类型。当表达式包含多个运算符时,将按预定顺序计算每一部分,该顺序称为优先级

       1.算数运算符

      +:加法

      -:减法

      *:乘法

      ^:指数次方

      /:相除返回浮点型结果

      \:相除返回整形结果

       2.连接运算符

       连接运算符是将两个字符串连接起来形成一个字符串,有+和&两种,其中+连接两个字符串,&可以用来连接两种不同类型的数据

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title></title>
    </head>
    <body>
        <%
            dim s1,s2,s3,r1,r2
            s1="today "
            s2="is "
            s3=#12/25/09#
            r1=s1 + s2        '字符串与字符串的连接
            r2=r1 & s3        '字符串与日期的连接
            response.Write r2
        %>
    </body>
    </html>
    View Code

      3.关系运算符

      关系运算符用于对两个表达式的值进行比较

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>关系运算符</title>
    </head>
    <body>
        <%
            Dim x
            x=100
            if x <> 200 then    '判断x是否与200相等
                response.Write "不相等"
            else
                response.Write "相等"
            end if
        %>
    </body>
    </html>
    View Code

       4.逻辑运算符

      逻辑运算符通常也称为布尔运算符,专门用于逻辑之间的运算。用于完成逻辑运算符的运算符有以下几种

      ①取反 Not

      ②与运算 And

      ③或运算 Or

      ④异或运算 Xor:如果两个表达式的结果同时为真或同时为假则结果为假,不然为真

      ⑤等价运算符 Eqv:是异或运算符取反的结果

     五、函数的应用

       VBScript提供了许多重要的内部函数,如字符串函数、转换函数、日期和时间函数、判断函数、数学函数以及其它函数的应用

      1.字符串处理

    函数说明
    Asc(str)返回第一个字符的ASCII字符代码
    InStr(start,str1,str2)返回从字符串str1的start位置查找str2第一次出现的位置,str1和str2同时返回0
    Lcase(str)将字符串中的所有字符转换为小写
    Left(str,len)返回字符串str最左侧长度为len的字符串
    Len(str)返回字符串的长度
    Ltrim(str)去除str左侧的空格
    Mid(str,start,len)返回从str的第start个字符开始的len个字符
    Right(str,len)返回字符串右侧的len个字符
    Rtrim(str)去掉字符串右边的空格
    StrComp(str1,str2,[method])使用method方式比较两个字符,其中0表示二进制方式比较,1表示文字方式比较。比较的结果返回为1、-1、0
    InStrRev(str1,str2)返回字符串str1中从尾部开始搜索某字符串str2第一次出现的位置
    Trim(str)去除字符串两端的空格
    Ucase(str)将字符串str转换为大写

     

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>取字符串的子串</title>
    <style type="text/css">
    <!--
    .STYLE1 {
        color: #3333CC;
        font-style: italic;
        font-weight: bold;
    }
    -->
    </style>
    </head>
    <body>
        <span class="STYLE1">代码要求:取出”2015-12-14 15:05:03“中的年月日部分:    </span><br>
        <%
            dim r,len,str
            r=#2015-12-14 15:05:03#
            len=InStr(1,r," ")
            str=Left(r,len)
            response.Write str
        %>
    </body>
    </html>
    View Code

      2.数据转换

      转换函数用于将一种类型的数据转换为其它类型的数据

    函数说明
    CBool(expression)将expression转换为布尔类型
    CByte(expression)将expression转换为单字节类型
    CDate(expression)将expression转换为日期类型
    CDbl(expression)将expression转换成双精度类型
    Chr(expression)将expression所表示的ASCII转换为对应字符串
    CInt(expression)将expression转换成整数类型
    CLng(expression)将expression转换成长整数类型
    CSng(expression)将expression转换成单精度类型
    CStr(expression)将expression 转换成字符串类型
    Hex(expression)将expression 转换成十六进制类型
    Int(expression)将expression 向下取整
    Fix(expression)将expression 向上取整
    Oct(expression)将expression 转换成八进制类型

     如例:将字符串转换为整形

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>将字符串转为整形</title>
    </head>
    <body>
        <%
            dim str,num
            str="100"
            num=Cint(str)+2
            response.Write num
        %>
    </body>
    </html>
    View Code

       3.日期时间数据的处理

      日期时间函数用于对日期、时间数据进行处理

    函数说明
    Date()返回系统当前日期
    DateSerial(year,moth,day)返回日期子类型
    DateVlaue(String)将字符串转换为日期型
    Day(Date)返回给定日期中的天
    Hour(Time)返回给定时间中的小时
    Minute(Time)返回给定时间中的分钟
    Second(Time)返回给定时间中的秒
    Now()返回当前系统的日期和时间
    Time()返回当前系统的时间
    TimeVlaue(String)将字符串转换为时间型
    Year(Date)返回当前日期的年
    Month(Date)返回当前日期的月份
    WeekDay(Date)返回一周中的某一天
    DateDiff("str",d1,d2)

    计算两个日期之间的间隔,str为yyyy表示计算年间隔,为m表示计算月间隔,

    为d表示日间隔,为ww表示星期间隔,为h表示计算小时间隔,为s表示计算秒间隔

    DateAdd("str",num,d1)

    返回日期d1加上数字num后的日期,其中num的单位根据str的值而不同

     

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>得到计算的时</title>
    </head>
    <body>
        <script language="vbscript" runat="server">
            response.write("今天是星期" & WeekDay(Date)-1 & "<br>")
            response.write("两年前的今天是" & DateAdd("yyyy",-2,Date()) & "<br>")
            response.write("距离2018-05-01还有:" & DateDiff("d",Date(),#2018-05-01#) & "")
        </script>
        
    </body>
    </html>
    View Code

       4.数据类型的判断

    函数说明
    IsArray(Var)判断var是否为一个数组
    IsDate(Var)判断var是否可以转换为日期类型
    IsEmpty(Var)判断var是否已经被初始化
    IsNull(Var)判断var是否为空
    IsNumber(Var)判断var是否为数字
    IsObject(Var)判断var是否为对象
    VarType(Var)判断var的类型,返回0表示空,2表示整数,7表示日期,8表示字符串,11表示布尔值,8204表示数组

      数据类型判断函数应用比较广泛,在使用数据之前判断此数据的类型,有助于提高程序运行的有效性

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>判断函数应用</title>
    </head>
    <body>
        <%
            dim num
            num=1
            if not isempty(num) then
                response.Write "不为空"
            else
                response.Write "空值"
            end if
        %>
    </body>
    </html>
    View Code

     

      5.数学函数的应用

    函数说明
    Rnd用于返回一个随机数
    Randomize初始化随机数生成器
    Int返回数字的整数部分
    Fix返回数字的整数部分
    Abs返回数字的绝对值
    Exp返回e的幂次方
    Log返回数值的自然对数
    Sqr返回数值的平方根
    Round返回按指定位数进行四舍五入对的值

      代码:生成随机数

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>生成随机数</title>
    </head>
    <body>
        <%
            dim i,r,str
            for i=1 to 3
                Randomize
                r=Int((6*rnd)+1)
                str=str&r
            next
            response.Write "生成随机数为:" & str
        %>
    </body>
    </html>
    View Code

     

    六、数组的创建与应用

      数组是有序数据的集合。数组中的每一个元素都属于同一数据类型,用一个统一的数组名和下标可以唯一确定数组中的元素,下标是放在紧跟在数组名之后的括号中。数组的最大维数为60

      1.创建数组

      在VBScript中有固定数组和动态数组两种

      ①固定数组:数组大小在程序运行时不可改变的数组。数组在使用前必须先声明

        dim array(i)

      在VBScript中,数组的下标是从0开始计数的,数组的长度为i+1

      例如:

        dim ary(3)    '该数组的长度是4而不是3

        dim db_array(5,10)  '声明一个6*11的二维数组

      声明数组后就可以通过下标对数组进行指定赋值

      例如:

        dim ary(3)

        ary(0)="demo"

      ②动态数组:声明数组时也可以不指明它的下标,这样的数组叫做变长数组

      例如:

        dim ary()

      虽然动态数组声明时无须指明下标,但在使用它之前必须使用ReDim语句确定数组的维数

        dim array()

        Redim array(i)

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>使用动态数组</title>
    </head>
    <body>
        <%
            dim i
            dim MyArray()        '声明动态数组
            Redim MyArray(3)    '定义长度为4
            
            for i=0 to 3
                MyArray(i)=2*i
            next
            response.Write "数组MyArray中元素为:<br>"
            for i=0 to 3
                response.Write MyArray(i) & "<br>"
            next
        %>
    </body>
    </html>
    View Code

     

      使用Redim语句可以多次改变元素下标,即重新动态调整动态数组大小的次数是没有限制的,但是使用Redim语句重新声明数组后,原有数组的数值将会全部清空,如果希望保留原有下标数值,则可以I使用Preserve关键字

      例如:

        dim ary()

        Redim ary(5)

        ......

        Redim Preserve ary(Ubount(ary)+1)

        以上代码将数组长度加1,但数组中原有的元素值不变。Ubound()函数返回原有数组的最大索引

      2.应用数组函数

      数组函数用于对数组的操作,主要有LBound函数、UBound函数、Split函数和Erase函数

      ①LBound函数:返回指定数组维的最小可用下标

        LBound(函数名称,[,维数])

      维数是指要返回指定维下界的整数,如果为1则表示第一维,为2表示第二维...如果省略维数,则默认维数为1

      例如:代码结果为0

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>使用动态数组</title>
    </head>
    <body>
        <%
            dim ary(5,10)
            response.Write(LBound(ary,2))
        %>
    </body>
    </html>
    View Code

     

      ②UBound函数:返回指定数组维的最大可用下标

      UBound(函数名称,[,维数])

      ③Split函数:返回基于0的一维数组,其中包含指定数组的子字符串。

      Split(expression [,分隔符 [,count [,比较类型]]])

        expression:表示需要处理的字符串,包含子字符串和分隔符。如果表达式长度为零,则返回空数组

        count:可选项,表示被返回的子字符串数目,如果为-1,则返回所有子字符串。

        比较类型:为可选项,用于指示在计算子字符串时使用的比较类型的数值,0表示二进制比较,1表示文本比较,2表示基于数据库中包含信息的比较

      例如:读取字符串中以符号/分割的各子字符串

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>使用动态数组</title>
    </head>
    <body>
        <%
            dim str,str_sub,i
            str="ASP程序开发/VB程序开发/.NET程序开发"
            str_sub=Split(str,"/")
            for i=0 to Ubound(str_sub)
                response.Write(i+1 & ". " & str_sub(i) & "<br>")
            next
        %> 
    </body>
    </html>
    View Code

     

       ④Erase函数:重新初始化固定大小数组的元素,并释放数组的存储空间。

        Erase array

    七、程序控制语句

      1.选择语句

      ①if...then...end if

      ②if...then...else...end if

      ③select case 变量或表达式

        case:结果1

          命令序列

        ...

        end select

      2.循环语句

      ① do...loop语句分为两种

      循环条件出现在语句的开始部分

      do while 条件表达式

        循环体

      Loop

      或

      do util 条件表达式

        循环体

      Loop

      循环条件出现在语句的结尾部分

      do

        循环体

      loop while 条件表达式

      或

      do

        循环体

      loop util 条件表达式

      其中while和util关键字的作用相反,while是条件为true时执行循环体,而util是条件为true时退出循环体

      在do...loop语句中,当条件表达式在前时,表示在循环条件为真时才能执行循环体,而表达式在后时,至少会执行一次循环体

      在do...loop语句中,强制退出循环使用exit do,for语句中使用exit for

      例如:应用do...loop计算多个数字的和

     1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     6 <title>do loop</title>
     7 </head>
     8 <body>
     9     <%
    10         dim num,sun
    11         num=0
    12         sum=0
    13         do until num>50
    14             num=num+1
    15             sum=sum+num
    16         loop
    17         response.Write("求和得到的结果是: " & sum)
    18     %> 
    19 </body>
    20 </html>
    View Code

      ②while...wend循环控制语句 :当指定的条件为true时执行一系列的语句,该语句与do...loop循环语句类似

      while condition

        [statement]

      wend

      condition:数值或字符串表达式,其计算结果为true或false。

       ③for...next循环控制语句:for...next语句是一种强制性的循环语句

      for count=start to end [step number]

        statement

          [exit for]

      Next

      ④ for each ...next循环控制语句:主要用于数组或集合中的每个元素而重复执行的语句,特别是在不知道集合长度的时候是不错的选择

      for each 元素 in 集合或数组

        循环体

        [exit for]

      next

      ⑤exit退出循环语句:主要用于退出,do...loop、for...next、function、sub代码块,其对应的退出语句分别为exit do、exit for、exit function、exit sub

    八、过程的创建与调用  

      过程是一组能执行指定任务的脚本命令,在VBScript中,过程分为两种,分为Sub过程和Function过程,两者的区别在于sub没有返回值,而function过程有返回值

      1.调用sub过程

      sub过程指包含在sub和end sub之间的VBScript语句,该过程执行操作但是没有返回值,sub过程可以使用参数(参数可以为调用过程传递的常量、变量或表达式)

      声明一个过程的语法格式如下:

      Sub 子程序名([参数1,参数2])

        ......

      end sub

      在asp页面中,调用sub有以下方式

      ①使用call语句调用sub过程

        call 子程序名(参数1,参数2)    ‘使用call语句可以将控制权传递给sub过程

      ②直接调用sub过程

      子程序名 参数1,参数2...

      例如:自定义sub过程判断闰年

     1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     6 <title>判断闰年</title>
     7 </head>
     8 <body>
     9     <%
    10         sub y(num)
    11             if (num mod 4=0) and (num mod 100 <> 0) then
    12                 response.Write(num & "年:是闰年<br>")
    13             else
    14                 response.Write(num & "年:不是闰年<br>")
    15             end if
    16         end sub
    17         call y(2000)
    18         y 2020
    19     %> 
    20 </body>
    21 </html>
    View Code

     

      2.调用function过程

      Function过程是包含在Function和end Function之间的一组VBScript语句,Function通过过程名返回一个值,这个值是在过程的语句中赋值给过程名的。Function返回值的类型总是Varian

      Function过程的语法格式如下:

      [public | private] Function name ([arglist])

        [statements]

        [name=expression]

        [exit Function]

        [Statemtns]

        [name=expression]

      end function

      function过程各参数说明:

    参数说明
    public表示Function过程可以被脚本中的所有其他过程访问
    private表示Function过程只能被声明它的脚本中的过程访问
    name过程名称
    arglist参数列表
    statements主体中执行的语句组
    expression常量、变量或表达式

      Function过程的调用方法和sub过程的调用方法相同。当Function过程没有返回值的时候可以使用call来调用过程;当Function过程有返回值时,使用过程名来调用过程

      例如:定义Function过程限制标题显示的长度

     1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     6 <title>function</title>
     7 </head>
     8 <body>
     9     <%
    10         function title__(tit)
    11             if(len(tit)>20) then
    12                 title__=left(tit,20)&"..."
    13             else
    14                 title__=tit
    15             end if
    16         end function
    17         dim str 
    18         str = "春之颂 大型电影交响音乐会将于2018年4月18日19:30 在国家大剧院盛装上演"
    19         response.Write "原标题名称为:"&str&"<br>"
    20         response.Write "修正后的标题为:"&title__(str) 
    21     %> 
    22 </body>
    23 </html>
    View Code

     

    转载于:https://www.cnblogs.com/dzj0712/p/8728497.html

    展开全文
  • VBScript

    千次阅读 2015-09-27 12:16:37
    2、在 VBScript 中,变量的命名规则遵循标准的命名规则,需要注意的是:在VBScript 中对变 量、方法、函数和对象的引用是不区分大小写的。在申明变量时,要显式地申明一个变量,需 要使用关键字DIm 来告诉 ...
  • VBScript和JavaScript都是一种脚本语言,那么它们之间有什么不同?下面本篇文章就来大家了解一下VBScript和JavaScript之间的区别,希望对大家有所帮助。【视频教程推荐:JavaScript教程】什么是VBScriptVBScript是...
  • VBScript和JavaScript连接数据库(ACCESS)

    千次阅读 2013-05-08 16:28:29
    1.VBScript连接数据库  程序代码 Dim conn,rs,sqlstr Set conn = CreateObject("ADODB.Connection") conn.connectionstring = "provider=microsoft.jet.oledb.4.0;data source=F:/wwroot/mzwu/db1.mdb" ...
  • 请问下VBScript 可视化执行界面 这个界面类似于cmd 可进入输入和输出显示。 不要是用IE的那种。 请问下,有吗。有的帮忙回答下。万分感谢。 在线等,谢谢
  • 每次将文件夹打包为ISO都要打开图形界面比较麻烦,特此制作脚本来完成,此脚本只适合做数据光盘,其他功能的ISO还是要使用UltraISO来完成。使用前需要将脚本的快捷方式放置到系统的SendTo文件夹中。
  • VBSCRIPT编译器.rar

    2011-11-19 14:09:12
    用vb编写的VBSCRIPT编译器,含有源码,界面简介,功能强大,可实现所有基本功能。
  • 在被UTF-8编码的vbscript页面,在写程序的过程中,不小心写错的话,在页面的输出信息是乱码的,如下图所示: 让人无法得知错误的原因。 毕竟在vbscript最初发展的时候,UTF-8编码还没有普及,都是默认以服务器...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • c#中执行脚本语言(vbscript)

    千次阅读 2019-05-07 18:28:13
    如果为False,则诸如消息框之类的界面元素不可见。 CodeObject Object 脚本暴露给宿主调用的对象。只读。 Modules Modules ...
  • 操作SecureCRT的界面

    2014-09-17 21:30:58
    主要用来操作SecureCRT的一个界面,脚本是VBscript,实现完全自动化
  • 解决Pycharm界面的子窗口不见了的问题pycharm程序界面一般有很多子窗口,如图1所示。pycharm项目视图-运行窗口图1 Pycharm子窗口如果你发现某些子窗口不见了,图2是最过分的情形,无须担心。图2 Pycharm界面的子窗口...
  • <SCRIPT Language=VbScript> Dim CurTable CurTable=MyTable.offsetLeft Dim TabII,TabJJ Dim CurWidth For TabII=0 To (MyTable.Rows.length-1) For TabJJ=0 To (MyTable.Rows(TabII).cells.length-1) If...
  • 文档为基于VBScript和控件实现WINCC SQL报表查询功能,内含SQL数据库的创建过程,以及WINCC中VBS脚本的代码,WINCC的报表界面等,更有助于参考学习
  • script VBScript

    2008-09-22 01:13:56
    VBScript 教程 http://www.w3cschool.cn/index-28.html VB 教程 VB 简介 VB How to VB Where to VB 变量 VB 程序 VB 条件语句 VB 循环语句 VB 总结 VB ...
  • 今天这篇文章我们来介绍下WinCC中的变量,并讲解怎样使用VBScript脚本访问变量,本文使用的编程软件是WinCC专业版。通常情况下,我们声明WinCC的变量是在左侧项目树的【HMI变量】中。变量需要声明在变量表中,可以是...
  • 利用SecureCRT的VBScript进行自动化控制

    万次阅读 2017-03-21 20:57:08
    在SecureCRT中使用VBSCRIPT脚本,确实能够提高我们的工作效率,并且可以实现完全的自动化。 SecureCRT给我们提供了很好的平台——脚本工具制作和运行。下面就SecureCRT工具常用到的几个函数阐述如下: 1. 在...
  • c++界面开发

    千次阅读 2015-09-22 10:25:07
    开发C++的界面,如果用MFC显得过于传统和呆板,如果是企业应用无所谓,要求没那么高,如果是互联网应用,就显得太单调了,不能容易的写出漂亮的界面,吸引眼球,像QQ,360这种客户端界面怎么开发出来的呢。...
  • 你可以用任何文本编辑器编写脚本,也可以在HFSS界面内编写。在HFSS内编写之后,如果有必要你可以在一个文本编辑器中修改它。 虽然HFSS以VBScript形式编写脚本,但也可以以JavaScript形式运行。如果使用命令提示符...
  • C++开发之界面库资源推荐篇

    万次阅读 2013-09-27 10:05:22
    开发C++的界面,如果用MFC显得过于传统和呆板,如果是企业应用无所谓,要求没那么高,如果是互联网应用,就显得太单调了,不能容易的写出漂亮的界面,吸引眼球,像QQ,360这种客户端界面怎么开发出来的呢。...
  • WINCC-VBScript脚本实现画面跳转

    千次阅读 2020-01-17 11:26:21
    WINCC-VBScript脚本实现画面跳转 HMIRuntime.BaseScreenName =“画面名称” 功能 定义或返回当前基本图片。 字符串(写-读访问) 使用 HMIRuntime.BaseScreenName=(<Serverpräfix>::) HMIRuntime....
  • Tkinter图形界面的应用

    2021-03-25 02:08:08
    Tkinter图形界面的应用 万年历 程序实现制作一个Tkinter图形界面日历(只显示阳历日期),用户选择某年某月,图形化显示当月...om = OptionMenu(root,v,'Python','PHP','CPP','C','Java','JavaScript','VBScript') 或者
  • 我的开源: UnInstaller for Windows(VBScript)

    千次阅读 2012-07-02 13:42:02
    简介 ...一般情况,对于使用MSI方式安装的软件,都使用一个Key来记录,并可使用下面命令卸载,可是这个key不好记忆,也因不同版本而不同,很不容易管理;...而且使用Windows的卸载界面不适合管理多电脑环境。 ms
  • 本文是对HFSS Scripting Guide文档中ANSYS Electronics Desktop and VBScript部分的理解性翻译,如有错误,欢迎大佬们批评指正,感谢!!! 2.录制一个脚本 在你开始录制脚本后,你执行的每个后续界面操作都会被...
  • 起因   使用MoinMoin Desktop Edition已经有一段时间了,每次开机都得运行wikiserver.py,而且总会有一个命令行的黑框,很碍眼。折腾了半晌,终于可以干掉黑框,让...利用VBScript创建wscript.shell对象,运行一个

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,803
精华内容 4,721
关键字:

vbscript界面