WINDOWS SCRIPT HOST对象在VB中的使用

  我们知道在DOS下我们可以利用批处理文件来执行一些基本的系统和文件操作。而为了让用户能在Windows下同样得到功能,微软提供了Windows Script Host。在本文中我向大家介绍的是如何在VB中使用Windows Script Host对象来丰富自己的程序。
  打开VB,点击菜单中的Project|References项,在弹出的References列表中如果有一项:Windows Script Host Object Modle。那么说明你的系统中已经安装了Windows Script Host对象,选中该对象然后再按确定键就可以将Windows Script Host对象加入到自己的工程中了。 

   1、获得Windows下一些特殊目录 

  如何获得Windows下一些特殊的文件目录(例如桌面、程序菜单)呢?使用下面的程序就可以获得这些特殊目录并在ListBox1中列出: 

  Dim iw1 As New IWshRuntimeLibrary.IWshShell_Class 

   List1.AddItem iw1.SpecialFolders("Desktop") 

  '获得桌面目录 

  List1.AddItem iw1.SpecialFolders("Fonts") 

  '获得系统字体目录 

  List1.AddItem iw1.SpecialFolders("Programs") 

  '获得程序菜单目录 

  List1.AddItem iw1.SpecialFolders("StartUp") 

  '获得程序启动目录 

  List1.AddItem iw1.SpecialFolders("Recent") 

  '获得最近使用文件目录 

  List1.AddItem iw1.SpecialFolders("FAVORITES") 

  '获得收藏夹目录 

  List1.AddItem iw1.SpecialFolders("SENDTO") 

  '获得发送到目录 

  List1.AddItem iw1.SpecialFolders("NETHOOD") 

  '获得网络邻居目录 

  List1.AddItem iw1.SpecialFolders("AppData") 

  '获得微软程序数据目录 

   2、运行程序 

  在VB中,我们有时候需要调用外部程序。而且还要暂停VB程序等待外部程序程序执行完毕。使用Windows Script Host对象,简直易如反掌。例如下面的语句: 

  Dim iw1 As New IWshRuntimeLibrary.IWshShell_Class 

  iw1.Run "c:/windows/notepad.exe",WshMaximizedFocus, True 

  就可以执行Windows下的记事本程序并使当前程序等待直到记事本程序关闭再执行下面的语句,如果不需要等待,将Run语句中的第三个参数从True改为False就可以了。

   3、建立和断开网络驱动器映射 

  在一般情况下要在VB中建立网络驱动器连接需要使用复杂的API函数,而使用了Windows Script Host对象就可以使得一切变得十分简单,来看下面的范例: 

  Dim iwNet As New IWshNetwork_Class 

  '获得计算机名 

  Debug.Print iwNet.ComputerName 

  '获得用户所在的域名 

  Debug.Print iwNet.UserDomain 

  '获得用户名 

  Debug.Print iwNet.UserName 

  '将网络上的主机Server1的共享驱动器Share_d映射为本机的H盘 

  iwNet.MapNetworkDrive "H:","//Server1/Share_d" 

  For i=0 To iwNet.EnumNetworkDrives.Count-1 

  List1.AddItem iwNet.EnumNetworkDrives(i) 

  Next i 

  上面的程序首先在Debug窗口中显示本计算机和所在网络的名称以及用户名,然后建立一个网络驱动器映射,最后将映射到本机的驱动器在ListBox1中列出来。如果要断开映射的驱动器,只要调用下面的语句就可以了: 

  '断开驱动器 

  iwNet.RemoveNetworkDrive "H:" 

  需要注意的一点是:调用Windows Script Host对象建立网络连接如果出现错误(例如要连接的主机不存在或驱动器错误),它不会象API函数那样返回一个错误码而会产生一个OLE错误,所以在程序中对于错误处理的代码一定要写好。 

   4、建立快捷方式 

  建立文件快捷方式并将快捷方式保存到文件也是Windows Script Host对象提供的功能之一,来看下面的代码: 

  Dim iw1 As New IWshRuntimeLibrary.IWshShell_Class 

  Dim iwSC As New IWshShortcut_Class 

  '建立一个快捷方式文件 

  Set iwSC=iw1.CreateShortcut("c:/windows/notepad1.lnk") 

  '设定快捷方式指向的对象 

  iwSC.TargetPath="c:/windows/notepad.exe" 

  '设定对象(这里是Notepad.exe)运行时的参数 

  iwSC.Arguments="c:/a.txt" 

  '设定对象运行时的工作目录 

  iwSC.WorkingDirectory="c:/" 

  '设定快捷方式的图标 

  iwSC.IconLocation="c:/windows/notepad.exe,1" 

  '保存快捷方式到文件 

  iwSC.Save 

  上面的程序建立一个指向Windows下记事本的快捷方式并保存到文件中。 

   5、注册表操作 

  使用Windows Script Host对象还可以进行注册表操作,例如建立、修改、读取、删除主键或者键值等。而且只需要三个函数,比使用Windows API来说方便的多。下面的语句就是一个建立和删除注册表键值的范例: 

  Dim WSHShell As New IWshRuntimeLibrary.IWshShell_Class 

  '在HKEY_CURRENT_USER下建立一个项,将默认值设置为Top level key 

  WSHShell.RegWrite "HKCU/MyRegKey/","Top level key" 

  '在MyRegKey下建立一个子项,将默认值设置为Second level key 

  WSHShell.RegWrite "HKCU/MyRegKey/Entry/","Second level key" 

  '在MyRegKey下建立一个值,名称为Value 

  WSHShell.RegWrite "HKCU/MyRegKey/Value", 1 

  '在MyRegKey下建立一个值,名称为Entry,类型设置为REG_DWORD 

  WSHShell.RegWrite "HKCU/MyRegKey/Entry",2,"REG_DWORD" 

  WSHShell.RegWrite "HKCU/MyRegKey/Entry/Value1",3,"REG_BINARY" 

  '删除相应的键 

  WSHShell.RegDelete "HKCU/MyRegKey/Entry/Value1" 

  WSHShell.RegDelete "HKCU/MyRegKey/Entry/" 

  WSHShell.RegDelete "HKCU/MyRegKey/" 

  上面的程序建立并删除建立的项,要看到程序运行效果,可以将上面的最后三句RegDelete语句删除,然后打开注册表编辑器察看。从上面的语句可以看到,使用RegWrite语句可以建立和修改一个项或者值,如果第一个参数字符串最后有一个“/”符号的话就是操作一个项,否则就是操作一个值。 

   6、获得当前Windows环境参数 

  环境参数就是操作系统保存在内存中的一些标记或指示性字符串,它纪录了一些基本的系统设置,例如路径、临时文件目录等,使用Windows Script Host对象可以获得所有的Windows环境参数: 

  Dim iw1 As New IWshRuntimeLibrary.IWshShell_Class 

  Dim strinfo 

  For Each strinfo In iw1.Environment("Process") 

  List1.AddItem strinfo 

  Next 

  上面的程序得到当前所有的环境参数并在List1上列出来。 

  从上面我的介绍可以看到Windows Script Host对象的确是一个很有用的Windows系统操作对象,易于使用并且功能强大。(微软提供Windows Script Host对象以及另外一个文件操作对象Microsoft Scripting Run的另外一个目的是这两个对象可以在VB Script中建立,这样就可以通过Web执行文件和系统操作了,但是却被一些人利用,例如著名的I Love You 病毒,就是利用Windows Script Host对象操作注册表使自己附身Windows中,在利用Microsoft Scripting Run对象破坏系统文件) 

  以上程序用VB6编写,在Windows98、2000下运行通过。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简介 当Microsoft Windows 3.1发布,我希望它与操作系统托管的脚本语言来。其他操作系统没有提供这样的语言,但Windows 3.1只有旧式的MS - DOS批处理文件。由于多种原因,我不想使用第三方解决方案,如PowerBASIC和REXX。在Microsoft Windows 95的开始,我用的Microsoft Visual Basic,Visual Basic应用程序(VBA)的,HTML脚本不时。 1998年,当我在写德国微软出版社Microsoft Windows 98的手册,我发现,Windows 98的一个新功能,叫做Windows脚本宿主(WSH),它提供了两种脚本语言,微软的Visual Basic脚本版(VBScript)和Microsoft JScript。 那年晚些时候,我开始写的Microsoft Press Microsoft Windows 98的电源工具包。我想,覆盖广泛的WSH在书介绍了如何使用脚本来自动备份文件,映射网络驱动器和打印机,并显示用户对话框等任务。但是,我无法找到任何有关WSH的文件,并与Windows 98附带的帮助文件并不包括脚本编程。 Windows Script Host的参考,基本上只是一张白纸,我咨询过的书籍和网站处理HTML脚本只使用VBScript和JScript。于是我开始调查与Windows 98附带的WSH样本,访问微软的脚本的网站,写我自己的WSH样本。 我挣扎着找出哪些对象在特定情况下使用,如何获取有关属性和方法的信息,以及如何实现VBScript或JScript脚本。我的第一个脚本的调试是一个痛苦的过程。 1 WSH的报道大多是神秘的运行时错误消息行X或者脚本根本没有做什么,我预期。 (当时,我不知道如何使用Microsoft脚本调试器在脚本环境。)接收运行时的错误消息后,我会到记事本加载的脚本,一次又一次,行计数手动找到故障线路,并尝试使用试验和错误的方法来修改代码。几个小时后,我决定,这种做法不可能是正确的方式做脚本编程。 一旦我开始访问的WSH新闻组,我发现其他人有同样的问题。伊恩Morrish,克拉伦斯华盛顿和迈克尔哈里斯,如新闻组参与者分享了大量有用的知识,但我还需要更多细节,特别是关于高级编程。我写的关于VBA编程和HTML脚本的书籍,所以我熟悉HTML脚本和ActiveX编程处理的互联网网站。从这些网站,我学到一些编辑器,支持脚本编程,我学会了如何使用Visual Basic脚本调试器和对象浏览器等工具找出更多有关对象及其方法和属性。我是能够增加我的生产力显著,并创造一个相对舒适的环境脚本。 首先,我使用了典型的“宏程序员”的做法,我试图结合简单的语句创建一个脚本程序。有时这种方法的工作,但我常常是语法和运行时的错误消息轰炸。我也错过了,我也可以用来复制文件,启动程序,获取用户输入,等强大的报表。在WSH的新闻组,一些人建议的第三方工具和语言,答应了丰富的报表收集。我知道,从以往的经验,但是,如果一种语言提供了丰富的报表集合,语言是难以学习和使用。 我用我的VBA编程经验的基础上,开始探索脚本背后的哲学。我了解到,您不必声明“埋”在一个任务,如阅读脚本的参数,并复制文件的脚本语言,因为WSH,您可以访问系统上安装的所有COM对象。因此,一个脚本可以使用这些COM对象提供的功能,以处理其任务。您还可以添加一个系统,它在不改变基本的脚本语言的脚本功能,增加新的COM对象。如果一个对象提供拼写检查,例如,你可以简单地在脚本使用对象。一旦我变得更加熟悉与WSH的,我发现它是最热门的技术在近年来从Microsoft。 WSH是胶,组合成一个新的,定制的应用程序对象(例如,一个Microsoft Office拼写检查,字处理器,一个浏览器,和邮件系统)。你可以实现一个复杂的应用程序的快速,方便,只需使用几行脚本代码。 这一点,我已经收集了大量的素材,积累了一些经验,写了许多样品。我也写了简短的章节对WSH在Microsoft Windows 98电源工具包。在1998年法兰克福书展,我会见了微软出版社收购编辑托马斯Pohlmann和斯蒂芬Guty,和WSH脚本编程标题的想法诞生。六个星期后,我的德国手稿准备好了。这本书的第一版出版于1999年1月。这是全球出版的第一个WSH的1本书。在春季,WSH 2的第一个beta版本发布。我们决定等待直到Windows 2000发布之前提前与WSH 2本书。我花更多的时间调查WSH 2和其他热点技术,如ActiveX数据对象(ADO),Active Directory服务接口(ADSI),和Windows管理规范(WMI)。我还写了WSH的初学者在电脑杂志的系列文章,我的网站上创建的WSH街,花了很多时间,访问了WSH的新闻组,以了解更多的脚本程序员遇到的麻烦。 我收集的材料已经足够了两本书,这其,对于初学者和级用户,和一个先进的用户量,处理脚本技术。微软出版社将出版的第二本书,与微软Wi​​ndows Script Host的2.0先进的开发,今年晚些时候。这本书是为先进的脚本程序员,谁想要在此介绍卷涵盖的主题,深入覆盖。与Microsoft Windows脚本宿主2.0高级开发将解释如何使用额外的对象,以延长您的脚本功能。特别主题,如。WSF文件和许多无证暗示,涉及到这些文件的XML结构,将被覆盖。还包括将解释如何使用额外的工具,如OLE / COM对象查看器或对象浏览器找出更多有关对象及其方法和属性。随着其他有用的技术,您将学习如何访问Microsoft Office应用程序从WSH脚本和如何使用,如Microsoft Excel电子表格,拼写检查办公室,Microsoft Word文档和Microsoft Outlook功能的对象。您还将学习如何阅读和使用Microsoft Access或ActiveX数据对象(ADO)从脚本编写到数据库。书还介绍了管理员如何从WSH脚本访问Active Directory服务接口(ADSI),以维护用户帐户,服务或股份。您将了解新技术基于Web的企业管理(WBEM),和称为“Windows管理接口(WMI)微软执行,你会发现如何使用脚本来访问网络和计算机信息,并取消正在运行的进程。您还可以发现,如何写的ActiveX控件,使用Visual Basic的控制项建立版(CCE)访问Windows API函数,创建ActiveX的形式,访问剪贴板,控制CD盘,更。我将深入研究在这本书使用的几个ActiveX控制更详细的源代码。鉴于Microsoft Windows脚本宿主2.0开发人员指南教你,你需要知道什么开始,与Microsoft Windows脚本宿主2.0高级开发与WSH的脚本会为您提供的信息,你需要成为一个专家WSH程序员。您将学到的专业开发人员使用,以帮助得到最有效的WSH的编程技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值