Board logo

标题: [问题求助] 关于wscript对象的方法的问题 诸如createobject quit等 [打印本页]

作者: jyswjjgdwtdtj    时间: 2023-3-5 20:04     标题: 关于wscript对象的方法的问题 诸如createobject quit等

本帖最后由 jyswjjgdwtdtj 于 2023-3-5 22:03 编辑

改了标题[哭]
getobject除了wmi还能怎么用?试了一下
set xls=getobject("1.xls")
居然没报错?但是怎么用?
当然我装了wps(office)和vba
wscript的Interactive属性怎么用?
CreateObject和wscript.createobject有什么区别?
WScript.Quit(1)
后面这个1返回到哪里去了?
wscript.ConnectObjectwscript.disConnectObject怎么用?
作者: Batcher    时间: 2023-3-5 20:21

请阅读论坛发帖规则,尤其是标题相关的内容:
http://bbs.bathome.net/thread-963-1-1.html
作者: czjt1234    时间: 2023-3-5 20:24

本帖最后由 czjt1234 于 2023-3-5 20:28 编辑

WScript.Interactive
该属性的初始值为True

如果设为False,则禁用用户交互模式,即不执行输入输出语句

注意:禁用用户交互模式后,不能再启用
示例

  1. Dim s
  2. MsgBox WScript.Interactive     'True  (初始值)
  3. MsgBox "秦时明月汉时关"          '正常执行
  4. WScript.Interactive = False    '禁用用户交互模式
  5. MsgBox "万里长征人未还"          '不执行
  6. s = InputBox("请输入")          '不执行
  7. WScript.Interactive = True     '禁用以后不能再启用
  8. MsgBox "但使龙城飞将在"          '还是不执行
  9. WScript.Echo "不教胡马度阴山"    '还是不执行
  10. s = InputBox("请输入")          '还是不执行
复制代码

作者: czjt1234    时间: 2023-3-5 20:29

CreateObject()函数是vbs的内置函数,在.hta文件、office宏、IE等环境都可以使用
而这些环境不支持WScript对象,也就不可以使用WScript.CreateObject()方法

CreateObject()函数,其第二个参数用于在远程服务器上创建对象
WScript.CreateObject()方法,其第二个参数用于绑定对象的事件
作者: czjt1234    时间: 2023-3-5 20:31

一个批处理调用vbs,并读取vbs的返回码的示例
  1. 'vbs示例:用于批处理调用vbs,并获取vbs的返回码
  2. WScript.Quit 20147578
复制代码
  1. @echo off
  2. D:\test.vbs
  3. echo %errorlevel%
  4. pause
复制代码

作者: czjt1234    时间: 2023-3-5 20:32

  1. '要求已安装office - Word
  2. 'Word对象支持Quit()事件
  3. Dim oWord
  4. '创建对象,并绑定事件处理程序
  5. Set oWord = WScript.CreateObject("Word.Application", "Word_")
  6. '为对象取消事件处理程序
  7. WScript.DisconnectObject(oWord)
  8. oWord.Visible = True
  9. WScript.Sleep 5000  '延时5秒
  10. oWord.Quit()        '事件处理程序已取消关联,不会被执行
  11. MsgBox "ok"
  12. Sub Word_Quit()
  13.     MsgBox "Quit()事件处理子程序", vbSystemModal
  14.     WScript.Quit()
  15. End Sub
复制代码

作者: czjt1234    时间: 2023-3-5 20:34

  1. '要求已安装office - Word
  2. 'Word对象支持Quit()事件
  3. Dim oWord
  4. Set oWord = CreateObject("Word.Application")
  5. WScript.ConnectObject oWord, "Word_"
  6. oWord.Visible = True
  7. Do
  8.     WScript.Sleep 500    '等待用户关闭Word
  9. Loop
  10. Sub Word_Quit()
  11.     MsgBox "Quit()事件处理子程序", vbSystemModal
  12.     WScript.Quit()
  13. End Sub
复制代码
建议在WScript.CreateObject方法创建对象时,直接指定事件处理程序
因为并非所有对象都可以用WScript.ConnectObject方法连接事件处理程序

比如InternetExplorer.Application对象就不支持WScript.ConnectObject方法
参考文档:Why does WScript.ConnectObject not always work?
https://blogs.msdn.microsoft.com ... ct-not-always-work/
作者: czjt1234    时间: 2023-3-5 20:37

获取已有的对象,只能用GetObject()函数
  1. 'GetObject()函数示例,不能用WScript.GetObject()方法
  2. Dim obj
  3. Set obj = GetObject("WinNT:")
  4. MsgBox TypeName(obj)
  5. Set obj = GetObject("Winmgmts:")
  6. MsgBox TypeName(obj)
复制代码
某些应用程序可以只激活文件的一部分
格式是:在文件名的结尾处添加!,并在其后附加要激活部分的标识字符串
比如某.CAD文件包含3个图层,可以只打开其第三个图层,标识符Layer3

如果文件支持多个Automation对象,则同时指定文件和对象progid'示例 (本脚本未经验证)
'要求已安装AutoCAD软件和FIGMENT软件,假定相关文件和文件夹已存在
  1. Dim oCAD, oDRW
  2. Set oCAD = GetObject("D:\CAD\SCHEMA.CAD!Layer3")
  3. MsgBox TypeName(oCAD)
  4. Set oDRW = GetObject("D:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING")
  5. MsgBox TypeName(oDRW)
复制代码

作者: jyswjjgdwtdtj    时间: 2023-3-5 21:56

回复 8# czjt1234


    牛逼!
作者: 老刘1号    时间: 2023-3-5 21:57

本帖最后由 老刘1号 于 2023-3-5 22:31 编辑
  1. Set oWord = GetObject(, "Word.Application")
复制代码
这样写如果已经有word运行可以直接获得,不会开一个新的word。
作者: czjt1234    时间: 2023-3-6 09:05

回复 9# jyswjjgdwtdtj


   我发了个vbs中文手册0.3,都是直接复制的里面的内容啊
作者: jyswjjgdwtdtj    时间: 2023-3-6 17:48

所以说getobject就是永远都只有一个实例 而createobject就是创建一个新实例?
作者: jyswjjgdwtdtj    时间: 2023-3-6 17:58

回复 11# czjt1234


    那个百度网盘链接我打开了 但是在哪里呢?
是在里面的chm文件里吗
里面的几个chm文件都是坏的额
作者: czjt1234    时间: 2023-3-6 20:28

回复 13# jyswjjgdwtdtj


   就在vbs目录下




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