ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5676|回复: 7

[转帖] Windows常用自动化对象简介

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-12-23 10:07 | 显示全部楼层 |阅读模式
本帖最后由 引子玄 于 2012-12-23 10:19 编辑

Windows常用自动化对象简介

附件内容DOC,和这个一样
事实上是写给脚本学习的朋友(WSH,VBS,JS)参考的,不过VBA也一样


1        自动化对象是什么?
这里的自动化指Microsoft的一个术语AUTOMATION(注释:Automation自动化),它是在COM对象基础上发展出来的,一堆鸟语,如果听不懂没关系,先理解成是方便使用的对象,一如结构化的程序,为了方便使用,提供标准函数,进化成API/DLL,后来就提供WINAPI,不过这是对象。
支持自动化的程序,包括VB、VBA、VBS、JS、VC以及其它大部分WINDOWS编程序语言,不过,在脚本系语言(JSCRIPT/VBSCRIPT)和VBA里是常见的,因为这两者往往强调借用其它对象达到编程的目的。
为了实现非本身设计的功能,VBA可以直接调用WINAPI接口函数,但在脚本语言里,这个路径是难以实现的,于是要从WINDOWS系统里调用“已有的类”(不是已有的API函数)生成对象,在VBA/VBS/JS里往往看到这种调用生成一个对象:
VBA的调用法
首先在工程里引用一个外部的库,然后当成一般的对象变量

DIM A AS NEW 某库.某类

或者是VBA和VBS的通用做法

SET A=CREATEOBJECT(“某库.某类”)  

ASP常见的是SET A=SERVER. CREATEOBJECT(“某库.某类”)
JSCRIPT的做法

var 某对象=new ActiveXObject("某库.某类");

除了NEW和CREATEOBJECT,还有从现有对象引用的GETOBJECT,都差不多
为什么要了解自动化对象
学会编程,了解结构化编程的作用以后,开始大概就是“写一些通用的,反复可以被我、别人使用的程序模块”,乐于助人,或者在碰了很次壁以后,会乐于被人助,想要“找一些通用的,反复可以使用的好用的模块”,更清楚一点就会知道,要找一些标准的,所有人机上都装了的函数最好:没错,就是传说中的库函数,更高级的就是系统API。
自动化对象也是一样,下面是介绍标准化的,常用的、几乎大家机上都装有的自动化对象——不是介绍大家怎么去装,也不是自已创建一个自动化对象库,而是知道、掌握找到这些常见的对象。
2        常用WINDOWS自动化对象:
2.1       脚本库文件系统对象FileSystemObject(简称FSO
注册名称:Scripting.FileSystemObject
FSO用于对文件系统的访问,可用于如下工作:检查驱动器、文件夹、判断文件/文件夹的存在、修改或删除文件属性,以及对文本文件的顺序访问。
FSO不提供对二进制文件的访问。
FSO是脚本运行时库(Scripting)的组件,在WIN98以后版本中默认安装。
在WSH的文档中可找到FSO对象模型参考,在MSDN98的VB中文版部分可找到FSO的参考。
在我看来,FSO的意义是给大家一个标准的文件编程代码。“正常情况”下脚本几乎只能用这个玩文件,而且也是FSO在网页早期成为病毒代码常使用工具之一。
VBA本身有文件系统代码,但如果不是二进制类,转用FSO也不错。
2.2        脚本库字典对象Dictionary
注册名称Scripting.Dictionary
字典类,根据关键词查找对应数据,是脚本运行时库(Scripting)的组件,在WIN98以后版本中默认安装。
在WSH的文档中可找到Dictionary对象模型参考。
2.3        脚本正式表达式对象 Regexp
注册名称Vbscript.Regexp
提供使用正则表达式的对象。
但它不是和SCRIPTING在一起*_*,没有具体考证为什么。
在WSH的文档中可找到REGEXP对象模型、使用参考。
正则表达式用于以语法、词法查询和分析一个字串。在以前的编程语法,VB、VBA甚至早期的C、C++都没有提供类似的标准库,我们解析一个字符串用的LEFT、RIGHT、MID之类在面对更复杂的搜索和解析要求时会变得困难,正则表达式就有用了。
2.4        MSXML库系列对象模型
注册名称MSXML.Document、MSXML2.Document、Mircosoft.XMLDOM、MSXML2.XMLHTTP等
以上都是XML文档对象,在WIN98以后版本中(实际是随IE5安装),可使用MSXML.Document;
在IE6以后版本中可使用MSXML2.Document。只要有MSXML.Document,也可以用Microsoft.XMLDOM这个名称。
XML文档对象提供文档模型对XML文件进行访问、修改。另外,也可以用XPath语法访问。
XMLHTTP也提供XML语法对网页的流解析。它的意义在于,和W3的DOCUMENT不同的是,如果客户端对DOCUMENT对象下载之后,进行解析,做了事件和动作(包括脚本程序行为),可能在时间、效率上不合算,直接解析网页的原始符号效率高一些。但它的缺点是不能在对象层上分析,如果分析目标做了脚本和对象级的ENCODE跳转,分析就变得复杂了。
下载微软的MSXML说明文档MSXMLSDK安装,其中有XML参考对象模型
2.5       OFFICE库WORD、EXCEL和ACCESS等对象
注册名称:Excel.Application、Word.Application、Access.Application等
OFFICE自动化对象按各自安装的应用程序以APPLICATION为根,随OFFICE安装后才能使用,在一般办公性的处理程序中很有用。
安装OFFICE时选中VBA帮助(默认不安装,可用安装盘添加组件),其中有OFFICE对象模型和使用方法。
虽然不是WINDOWS自带,不过几乎是大部分系统有的对象,特别是EXCEL和WORD。它们也是VBA得以推广的基础。
事实上,EXCEL似乎被用得最多,相对来说,WORD虽然在办公领域常用,但数据处理的应用当然是电子表格更多 罢。
2.6       Adodb库数据连接对象
注册名称:ADODB.Connect、ADODB.Record等
访问ODBC数据库接口的重要对象,几乎是M$的数据编程标准,差不多凡是能在WINDOWS上运行的商业化数据库都提供ADO接口,所以在很多VB或VFP、网站ASP编程中都会用到。它可用于访问各种数据库,但因为不同的数据库有不同的ADO参数,编程人员应对特定数据库连接方式有所了解。
MSDN98中有ADO相关参考,但是没有新版本新增对象参考(如ADO2.5的stream),尚不清楚ADO2.5以后的完整参考文档取得方法,可能是随ADO2.X对象下载安装单独提供文档。
2.7       IE文档模型对象
注册名称:InternetExplorer.Application
代表网页浏览器IE的对象,在程序可用它实现访问网页的功能。
注意一下这个对象,首先,IE APPLICATION包含了 WEB DOCUMENT在内,这是W3的一个DOCUMENT子集(有兼容性部分的文档会有说明),另外,网页从DOCUMENT对象开始的编程是大部分网页标准兼容的。
注意在MS的WEB 控件里也有类似的对象结构,因为它们从DOCUMENT对象以下都是相似的,但WEB 控件本身不是AUTOMANTION对象,这意味着你不能用CREATEOBJECT直接向系统请求创建一个实例,特别是在脚本里这么做。
安装了IE5及以后的版本都会有这个对象,也就是WIN98第2版以后都有,熟悉这个对象结构对网页和其它脚本编程很有用。
在OFFICE2000可找到HTMLREF文档有关于IE对象的参考
2.8       WINDOWS系统桌面对象Shell.Application
桌面对象,可能代表EXPLORER.exe,但是它在WIN98以后才出现,也可能是结合IE的一个对象,MSDN98中以索引关键字”SHELL OBJECT”可以找到SHELL的对象模型(SHELLCC.CHM)。可以用来操纵文件夹对象,做COPY、MOVE之类的工作(FSO对象也有这些功能),也可以做一些桌面操作,如SHUTDOWNWINDOWS(关机)、BrowseForFolder(打开文件夹)
在MSDN98和MSDN NET都有它的模型说明,不同版本的WINDOWS系统EXPLORER模型不同。
2.9        WSH脚本宿主对象
WScript.Shell,WScript.Network
可用于运行应用程序、网络维护和注册表。
但应注意的是,和WSH本身不同,直接运行WSH可以调用一些WSH内部的对象,在上述两个对象不能直接用。
下载WSH随说明文档可找到对象模型参考。另外MSDN98用WSCRIPT索引也可找到早期WSCRIPT对象参考的英文版本。

---------------
注释:COM
com为company简称,表示公司企业,com结尾的域名为最早通用的顶级域名。
国际域名及IP地址管理权威机构ICANN认证的域名注册服务商(称为Registrar)可以提供.com(商业机构)、 .net(网络服务机构)、.org(非赢利性组织)下的二级域名注册服务,截至2012年全球通过ICANN认证的Registrar有120多家,其中只有60家是正式投入运营的Registrar。
COM
abbr.
1. =computer-output microfilm(er) 电脑输出微缩胶片
2. =Component Object Model 【电脑】组件对象模型


TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-23 10:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Windows脚本宿主Windows Scripting Host(WSH)简介


1.概述

虽说不是只有NT5才有WSH,但NT5(WINDOWS2000)一定有WSH的。实际上,你在WIN98+PWS里,或者NT4+IIS4里,你就能找到WSH。

WSH是微软脚本技术系列中的一种,简单讲,就是提供了一种脚本环境,在这个环境中,预定义了一些对象,同时也可以使用COM里的其他对象。他使用一种脚本引擎来对脚本解释执行,微软自己支持VBSCRIPT和JSCRIPT,第三方也可以开发自己的脚本引擎。

具体点,就是你先编好一些脚本文件(微软自带例子若干,后缀.vbs或 .js),然后用一个程序对他解释执行,这个程序就叫Windows Scripting Host,程序的名字是Wscript.exe(或者命令行的Cscript.exe),你可以查看一下你的机器里有没有这两个文件,就知道有没有WSH了。这非常像批处理文件,只不过文件里不是命令行,而是脚本语言写的脚本。同时,他完成的功能也非常像批处理文件,只不过多了些控制。

我主要用WSH来完成一些繁琐的、通常需要我反复操作才能完成的任务,比如给大量目录设置ACL,或者创建大量的目录等等。虽然这也可以编写VB或VC程序来实现,不过比起脚本来,实在麻烦,至少需要那么大的环境,而脚本只要一个写字板就成。用WSH技术来配置服务器,包括创建用户,创建邮箱,创建目录,创建站点,设置ACL,设置FrontPage ServerExtention,我将在WSH实用讲座中分几讲详细介绍。

2.组成

WSH自带的几个内置对象包括:

1.由 Wscript.exe 提供的对象
Wscript 作为 Wscript 公开给脚本引擎。
WshArguments 未公开;通过 Wscript.Arguments 属性访问。

2.由 WSHom.Ocx 提供的对象。
WshShell 自动对象。
ProgID 是 Wscript.WshShell。
WshNetwork 自动对象。ProgID 是 Wscript.WshNetwork。
WshShortcut 未公开;通过 WshShell.CreateShortcut 方法访问。
WshUrlShortcut 未公开;通过 WshShell.CreateShortcut 方法访问。
WshCollection 未公开;通过 WshNetwork.EnumNetworkDrives 或 WshNetwork.EnumPrinterConnection 方法访问。
WshEnvironment 未公开;通过 WshShell.Environment 属性访问。
WshSpecialFolders 未公开;通过 WshShell.Folder 属性访问。

他们主要可以完成环境变量的获取,网络登陆,驱动器映射,快截方式创建,程序加载,特殊文件夹(如系统文件夹)信息获取等功能。
如果你的系统里支持ADO等COM部件,你同样可以使用。


3.示例

下面这个例子演示打开写字板查看文本文件,同时创建一个文本文件并写入一段话,你可以把他拷贝到写字板中,然后以.vbs为后缀存盘,之后双击他,

注释:test.vbs

Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Run ("notepad " & Wscript.ScriptFullName)
注释:上面用SHELL对象启动程序

Set fs = Wscript.CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\testfile.txt", True)
a.WriteLine("这是一个测试。")
a.Close
注释:用COM对象Scripting.FileSystemObject操作文本文件

4.哪里找到学习材料

在PWS和IIS4,5的产品文档里有非常齐全的WSH文档,建议大家先学习学习,了解了解WSH的基础知识。

-------------------------------------
"windows脚本宿主"影射c:\windows\system32\wscript.exe
Windows系统中靠它来执行某些脚本程序!可以传播蠕虫病毒,添加帐号,修改密码,删除文件等等等等

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-26 19:43 | 显示全部楼层
本帖最后由 引子玄 于 2012-12-26 19:50 编辑

后台主要操作对象: (封装的API自动化程序——WIN主要调用对象)

With CreateObject(“Scripting.FileSystemObject”)

With CreateObject(“Scripting.Dictionary”)

With CreateObject(“Vbscript.Regexp”)

With CreateObject(“Microsoft.XMLDOM”)
With CreateObject(“Microsoft.XMLHTTP”)

With CreateObject(“Excel.Application”)
With CreateObject(“Word.Application”)
With CreateObject(“Access.Application”)

With CreateObject(“ADODB.Connect”)
With CreateObject(“ADODB.Record”)

With CreateObject(“InternetExplorer.Application”)

With CreateObject(“Shell.Application”)

With CreateObject(“WScript.Shell”)
With CreateObject(“WScript.Network”)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-12-26 20:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
引子玄老师,请继续!

TA的精华主题

TA的得分主题

发表于 2012-12-26 21:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
附件在哪,没看见啊。

TA的精华主题

TA的得分主题

发表于 2014-1-13 10:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-3-29 23:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
很全,很详细,感谢楼主分享

TA的精华主题

TA的得分主题

发表于 2018-5-6 12:27 | 显示全部楼层
留下足迹,还请楼主推荐下相关学习资料、书籍(或学习方向),谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 11:34 , Processed in 0.057359 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表