Board logo

标题: [问题求助] VBS中Automation对象的问题 [打印本页]

作者: applba    时间: 2012-1-18 01:07     标题: VBS中Automation对象的问题

本帖最后由 applba 于 2012-1-19 15:31 编辑
(2)创建Automation对象

CreateObject Function
创建并返回一个对 Automation 对象 的引用(即该对象的句柄)。
CreateObject(servername.typename [, location])
    servername ,The name of the application providing the object.
    typename ,The type or class of the object to create.
    location ,The name of the network server where the object is to be created.

提供Automation对象的应用程序称为Automation server ,每个server提供至少一种对象。
例如,一个字处理应用程序可能提供 application object,document object 和 toolbar object。

例子:
Dim ExcelSheet
'使用set语句引用CreateObject函数创建的Automation 对象。
Set ExcelSheet = CreateObject("Excel.Sheet")
' 使 Excel 在整个 Application 对象中都可见。
ExcelSheet.Application.Visible = True
' 将一些文本放入工作表的第一个单元格中。
ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1"
' 保存工作表。
ExcelSheet.SaveAs "C:\TEST.XLS"
' 关闭 Excel,使 Quit 方法处于 Application 对象中。
ExcelSheet.Application.Quit
' 释放对象变量。
Set ExcelSheet = Nothing


以上本人笔记,翻译自微软的参考文档。

OLE Automation
From Wikipedia, the free encyclopedia

在Microsoft Windows 应用程序编程中,OLE Automation (随后被微软改名Automation ,虽然旧词条保持广泛使用),是一个基于Component Object Model (COM) 的进程间通信机制。COM  本来是打算给脚本编程语言使用——起初是Visual Basic ,但是现在已经被运行在Windows上的各个语言使用。Automation提供一个基础结构,以供名为Automation控制器的应用程序可以访问和操作(比如设置属性和调用方法)  由其他应用程序共享的Automation 对象。它取代了 Dynamic Data Exchange (DDE),一个用于应用程序控制另一个应用程序的机制。与DDE一样, Automation中, Automation控制器是 "client" ,输出 Automation对象的应用程序是"server"。


以上内容翻译自维基百科~


我的问题是:
怎么知道系统有多少Automation对象(即CreateObject函数可以创建的对象)?
怎么获取每个对象详细documentation?有没有这样一个大全?
作者: Demon    时间: 2012-1-19 00:30

本帖最后由 Demon 于 2012-1-19 00:32 编辑

这个问题涉及COM组件的知识,不是一句两句话能够说清楚的,实际上我也没有完全弄明白。

如果你只是想知道系统有多少Automation对象,可以打开VbsEdit,选择Tools->References->Add,在ProgID下拉列表中有所有的对象(其实除了常用的那几个以外,其他的基本没什么用)。至于documentation,对象的Type Library中可能会有简单的描述,详细的文档只能看写这个组件的人有没有公布了。

如果你想深入了解,推荐你阅读Jeff Glatt的神作《COM in plain C》。
作者: broly    时间: 2012-1-19 13:31

Component Object Model 就是我们说的COM组件,用.NET框架写比用VC写容易,这个就是所谓的从面向对象到面向组件的转变。COM组件你可以理解为VBS的第三方软件(就对比批处理而言),它可以提供对象模型给我们使用。而这种文件一般后缀是DLL,也就是要我们注册才可以使用。注册后,在注册表就会产生相应的clsid。所以你在注册表HKCR\CLSID下就可找到系统可以用的对象,但是要注意,必须这个子选项下有ProgID。比如FSO,我的是(可能每个人的不一样)
[HKEY_CLASSES_ROOT\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}\ProgID]
@="Scripting.FileSystemObject"

为什么不是每个COM组件都能给我们调用呢?因为COM有几个接口,其中在IDispatch接口的对象模型我们才能够创建的,也就是自动化(automation)必须依靠这个接口。

关内关于COM组件的参考资料,可以看看vckbase杨老师写的
作者: applba    时间: 2012-1-19 15:30

我没有学过C,delphi和VB也忘差不多了~
说啥概念都知道一点,但是啥都不精通~
所以,我只想知道怎么使用它~
作者: Demon    时间: 2012-1-20 09:34

我没有学过C,delphi和VB也忘差不多了~
说啥概念都知道一点,但是啥都不精通~
所以,我只想知道怎么使用 ...
applba 发表于 2012-1-19 15:30


那就用VbsEdit就行了。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2