One step to sky
vbscript吧
全部回复
仅看楼主
level 9
H_氢 楼主
Well,不知道该说些什么了。VBS_Users:你们还好么?就知道,三分钟的热情难以让人真正有所提高,所以看到了“浮夸”很多。沉迷在Shutdown和SendKeys中或许没那么有激情吧,只是这种事谁知道,因为别人的想法你总是难以感同身受。只是想写字,没那么多想法。只是想立个帖子,感受一下自己的存在。That's it!
2014年08月01日 14点08分 1
level 9
H_氢 楼主
几个值得回忆的关键字:
1.Dim
引用方法:Dim [VarableName]
或许大神的你不需要Dim就能把变量玩弄的很熟练,因为在VBS中这确实也没那么必要,无需注册即可使用。没关系,I am a rookie.说到Dim,就不得不“变量”这个字眼。VBS中的变量都是“变体”(Variant),这种“全能”的数据类型。强悍在哪?
Option Explicit
Dim Variant_Data
Variant_Data=123:Msgbox TypeName(Variant_Data),,"Data_Type"
Variant_Data=12.30:Msgbox TypeName(Variant_Data),,"Data_Type"
Variant_Data=123000:Msgbox TypeName(Variant_Data),,"Data_Type"
Variant_Data="123":Msgbox TypeName(Variant_Data),,"Data_Type"
Variant_Data=
#2011/09/23#
:Msgbox TypeName(Variant_Data),,"Data_Type"
Variant_Data=True:Msgbox TypeName(Variant_Data),,"Data_Type"
Set Variant_Data=CreateObject("Wscript.Shell"):Msgbox TypeName(Variant_Data),,"Data_Type"
Set Variant_Data=Nothing:Msgbox TypeName(Variant_Data),,"Data_Type"
你看到了什么,变量的数据类型被任意转换了。没错,这让你了解到了“世界上没那么多绝对”。所以,我用Dim将变量留在记忆中,让它在数据洪荒中没有忘记它的“使命”。
所以,我加上Option Explicit让系统强制管控我随意使用变量的私欲。
2014年08月01日 14点08分 2
level 9
H_氢 楼主
2.Const (只读变量声明字)
作用:声明一个值不改变的“常量”,这个常量可以是数字,字符串或者其他(我不知道)。
Const PI=3.1415926...
Const adModeReadWrite=3
Const strConst="Hello,world"
Const MAX_LENGTH=256
声明这些常量,让自己的程序更简洁易懂,而且更易于修改。And也很酷,不是么?
还有其他要说的么?Google或者Baidu吧~
2014年08月01日 14点08分 4
level 9
H_氢 楼主
3.Private,Public
还是关于变量的定义,只是作用域的不同,才疏学浅解释不清啊。
Private顾名思义,私有。作用域局部
Private 语句 在模块级别中使用,用于声明私有变量及分配存储空间。
Public顾名思义,公有。作用域全局
public在程序语言中基本都表示全局变量或者全局函数,他的本意是“公共的”的意思,他表示某个变量或者函数是全局函数
不懂?没关系,这个在初步阶段总是被忽略的字眼,等你使用它们的时候,你已经有足够的经验和能力。还是那句话,Google it if you want...
2014年08月01日 14点08分 5
level 9
H_氢 楼主
4.Sub,Function
使用方法:Function [FunctionName](Parameters1,..)
Function,表示子例程的一般性名词。在某些编程语言中,它指带返回值的子例程或语句。在一些编程语言中起着关键字的作用.上面说简单来说了,Function用来声明一段具有返回值的代码段。这段代码你可以在脚本的全局当中使用
Msgbox iMsgbox("Hello,world")'如果你需要返回值的时候,加个括号就可以了
iMsgbox "Hello,world"'不要的时候,只需要在函数后面加上参数即可执行
Function iMsgbox(str)
iMsgbox=Msgbox(str)'这里是它的功能,看到没它还有返回值,而返回值可以是任何类型的值。就像你知道那样,它也是个变体,也算得上是个“变量”
End Function
传说中模块化编程必不可少的东西。如果你厌倦了把程序写成裹脚布,那么把程序函数化将是很不错的选择。为什么要这么做:
1。使程序结构更清晰
2。便于排除程序的错误
3。复用性:当一段代码重复出现的时候它的价值就体现出来了。
4。还是很酷。。。牵强的理由
5。其他的你来补充吧~
如果你还不懂什么是自定义函数,那么真的应该感受一下了。它忍者的手里剑,是个值得信赖的好武器,随心所欲。
2014年08月01日 14点08分 6
level 9
H_氢 楼主
而Sub呢,与Function基本无异,唯一的差别就是,它没有返回值。就像它的本意那样,“过程”,追求的是过程不是结果。
Sub和Function是俩个很好的东西,学会自定义函数是编写好程序的基础。
至于,你说参数?那个看你自己的需求,想传入参数,就可以在声明的时候写上参数列表,不想传入参数,就不写,很简单。
一点点建议:尽量写Function,要有一定的容错处理,返回值最好是关于函数运行状态。
比如,最简单的:
Function Sample_Function(Parameters,...)
On Error Goto Error_Handle:
...
Error_Handle:
Sample_Function=Err.Number:Err.Clear
End Function
当然,这是无法避免错误发生的时候,错误的排除要靠自己。只不过在一些特殊情形下,能够捕捉到当时的错误状态。
诶,下面该说些什么呢?
2014年08月01日 14点08分 7
level 9
H_氢 楼主
5.不可迷信的 On Error Resume Next
作用:在程序出现错误的时候,无视错误执行下一步。只要加上这一句,程序就会没有任何错误提示,看上去似乎是个万金油。但是:不要把自己的无知用On Error来掩盖,这是对自己不负责的做法。如果,你喜欢编程,那么就该具有渴望解决问题的热情,而不是异想天开的掩饰和躲避。但是,道具无错,错的只是用到了不
正确的
地方。On Error Resume Next,有时候是个很可爱的东西,在面对一些未知和强制性的交互错误时,它可以免去程序崩溃的麻烦。至于你信不信,我。。。
Function Sum(x)
On Error Resume Next
Sum=x+Sum(x-1)+1/x*0
End Function
MsgBox Sum(100)
上例就是利用On Error来求1-100加和(不过貌似这个例子没什么说服性)
总之,自我感受吧。。。--~
2014年08月01日 14点08分 8
level 9
H_氢 楼主
6.Object 对象个体 似乎很抽象
百科上的解释:在应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象,它既可以使具体的物理实体的抽象,也可以使人为的概念,或者是人和有明确边界和意义的东西。
对象是类的实例化。一些对象是活的,一些对象不是。https://imgsrc.baidu.com/baike/abpic/item/caae68097c0e85962eddd4d6.jpg客户端对象件的包含关系图比如这辆汽车、这个人、这间房子、这张桌子、这株植物、这张支票、这件雨衣。 概括来说就是:万物皆对象。
对象的特点归结起来有三个:属性、方法、**。
简单来说,对象就是一个完整独立的个体,它可以具有上述三种特质:属性、方法、**。
在VBS中常常使用的Wscript.Shell,FSO,RegExp就是对象,它是一个聚合很多功能的完全体。VBS作为一个基于对象的脚本语言,因而在学习VBS过程中必须对“对象”这个概念有一定的理解。
2014年08月01日 14点08分 9
level 9
H_氢 楼主
6.Class 类
这是一个VBS保留的关键字,用它可以声明一个类体。如:Class Test_Class
什么是类?这个不要问我,我不是“专家”,解释的说法有很多。
引用一下百科:
  类是 面向对象程序设计语言中的一个概念。一个类定义了一组对象。类具有行为(be-havoir),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。
程序设计中类的含义  https://imgsrc.baidu.com/baike/abpic/item/ca5257540486a26c574e007a.jpg一个简单的类图类(Class)实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。
  类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上它本身并不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。
  可以把类看作“理论上”的对象,也就是说,它为对象提供蓝图,但在内存中并不存在。从这个蓝图可以创建任何数量的对象。从类创建的所有对象都有相同的成员:属性、方法和事件。但是,每个对象都象一个独立的实体一样动作。例如,一个对象的属性可以设置成与同类型的其他对象不同的值。
呵呵,看上去还是很复杂。如果你不想了解,我只想能用它就好了,可以去无视它。不过我想当你真正成为高手的时候,你或许会对它很感兴趣。自定义类,和自定义函数一样。都是一个功能的个体。只不过这个类是很多函数和属性的**体。一个完整的类也是一个对象。
2014年08月01日 14点08分 10
level 9
H_氢 楼主
7.Property,Method 属性和方法
类的两大元素。
属性:
属性是实体的描述性性质或特征,具有数据类型、域、默认值三种性质。
  用于文件,指出文件是否为只读、隐藏、准备存档(备份)、系统文件、压缩或加密,以及是否应索引文件内容以便加速文件搜索的信息。
  在 Active Directory 中,是指对象地特征和对象可以包含的信息类型。对于每个对象类别,该架构定义一个类别实例必须具有什么属性以及该类别实例可能具有哪些其他属性。
  属性( attribute )是编程语言结构的任意特性。属性在其包含的信息和复杂性等方面变化很大,特别是当它们能确定时翻译/执行过程的时间。属性的典型例子有:变量的数据类型、表达式的值、存储器中变量的位置、程序的目标代码、数的有效位数。
  可以在复杂的处理(甚至编译程序的构造)之前确定属性。例如,一个数的有效位数可以根据语言的定义确定(或者至少给出一个最小值)。属性也可以在程序执行期间才确定,如(非常数)表达式的值,或者动态分配的数据结构的位置。不同的属性变化,甚至不同语言的相同属性都可能有完全不同的联编时间。在执行之前联编的属性称作静态的( static ),而只在执行期间联编的属性是动态的( dynamic )。
  if-then-else 表达式的使用扩充了表达式的种类,它们可以通过有用的途径出现在属性等式中,在属性等式中,允许出现的表达式的**称作属性文法的元语言( metalanguage )。通常我们希望元语言的内涵尽可能清晰,不至于引起其自身语义的混淆。我们还希望元语言接近于一种实际使用的编程语言,因为就像我们即将看到的一样,在语义分析程序中需要把属性等式转换成执行代码。在本书中,我们使用的元语言局限于算术式、逻辑式以及一些其他种类的表达式,再加上 if-then-else 表达式,偶尔还有 case 或 switch 表达式。
简单点理解:属性其实就是一个变量。但它可能是只读的,也可能不是,这要看这个类是怎么定义某个属性的。既然是变量,那就没什么好说的了,你不是很会用么。只不过在你使用这个变量前,总要在属性前加上它的Owner也就是引用这个类的对象名。但是在引用类的时候,会用一个对象名来代替。比如Set objShell=CreateObject("Wscript.Shell"),objShel
2014年08月01日 14点08分 11
1