ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
**Wscript.shell是[Wshshell](https://wenku.baidu.com/view/3ce523e981c758f5f61f6736.html)的ProID** Wshshell是一个对象,存放在windows系统中的wshom.ocx文件中,可供在windows上运行的程序调用。他可对windows的外壳程序进行访问。 对象(object)是一些相关变量和方法的软件集,或者说库。当你需要这个对象里面的变量,方法,功能的时候,你就可以使用相关语言(代码)来调用。 ProID是程序员给某个CLSID指定的一个易记名字。组成如.. CLSID是windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件分配的一个唯一表示它的代码。为Class ID的缩写。 **所以:代码  **Set Obj = createobject("WScript.Shell")**得到对象Obj,即Wshshell,是一个对象。** **我们首先了解下对象Wscript : Windows Script Host object model (注意,前三个缩写为Wsh )** 简单的说,Wscript就是Windows脚本宿主对象模型(WSHOM) , 而Wscript就是windows内对象存放的一个根对象(官方语言:Wscript是一个基于windows系统脚本宿主对象的根对象), 利用它可以创造两种COM对象:WshShell 与 WshNetwork . 注释1:(八卦一下,不知道现在的诸如WshEnvironment, WshCollection, WshExec等对象是不是也存放在该根对象下,依照我的理解是的,因为他们都有前缀Wsh,但他们应该不是COM组件,故不再上面列出,应该是这样吧。另需注意Wsh是Wscript对象内置的变量,故在你载入WshShell后,在没有声明的情况下不能使用Wsh作为变量,否则会出现错误) 注释2:(COM对象即the Component Object Model,组件对象模型。COM组件是遵行COM规范编写,以Win32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行二进制代码,能够满足组建对框架的所有需求。简单理解COM对象就是可执行二进制代码存放的根对象)(貌似我搞不懂,如果真是这样,他们为什么非要用model模型这个单词呢,为什么不用Root根或family集合这类单词呢) 其中WshNetwork对象主要用于访问局域网环境下的[资源](http://zy.anjian.com/?action-resource)共享,我们这里就不阐述了。 对于WshShell对象,其中的Shell是外壳的意思,应该是此对象能够调用windows的外壳程序,故取名shell,个人觉得那么Wscript.shell这个ProID堪称完美。 **因代码中都用另一个对象等价于WshShell,以下用Ws替代WshShell .** **功能** Ws能够实现模拟键盘,向激活窗口发送键值实现选择,谈出定时对话框,读写注册表,启动程序,创建快捷方式等等功能。 **方法** AppActivate ([按键精灵](http://zy.anjian.com/)不支持,属vbs)             判断窗口是否被激活 CreateShortcut                                           创建并返回WshShortcut对象 ExpandEnvironmentStrings                            扩展Progress环境变量并返回结果字符串 Popup                                                        显示包含指定消息的消息窗口 RegDelete                                                  删除注册表某目录 RegRead                                                    读取注册表某目录 RegWrite                                                   编辑注册表某目录 Run                                                           启动程序 SendKeys                                                   发送字符串或一些特殊的键盘字符 Ws.AppAcitve  窗口激活经常在自动化测试中需要用到,特别是需要测试对象出现后再做的激活,往往需要一定的等待时间。如果此时使用循环结构进行判断窗口是否激活,可以节省时间。Ws提供了一个非常有用的功能(即方法,不知一个人觉得功能比方法更贴切吧) 语法:   Ws.AppActive(title) 参数title:为需要激活窗口的titile属性值,也就是标题或者ProcessID 返回值:布尔值。如果激活了返回True,未激活返回False Ws.Popup在弹窗内显示文本信息,即实现定时提示框的作用。 语法:i=Ws.Popup("text" ,"int","title","nType") 参数:text是弹窗文本内容,int是弹窗最长显示时间秒,title弹窗标题,nType是是弹窗显示按钮和图标类型的数值 返回值:用户单击以解除弹窗的按钮值 例程:YN=Ws.Popup("你去过香格里拉吗“,“20”,“经历”,"2") Ws.Run  启动windows自带的软件。如记事本   例程:Ws.Run  "Notepad" 功能:运行记事本 Ws.SendKeys主要用在对象无法识别时,又要在此对象内输入字符串,即可用此法。又或需要用快捷键时,也可用此法。 语法:Ws.sendkeys  string\[,wait\] 参数: string为指定要发送的字符串或特殊字符。wait可选,指定等待的方式。 例程:Ws.sendkeys "我去过才怪” **属性** Ws.CurrentDirectory   返回或改变该当前目录 Ws.Environment         返回WshEnvironment对象 Ws.SpecialFolders        使用WshSpecialFolders对象对windows shell文件夹进行访问。