WSH的介紹
什么是WHS?Windows 腳本宿主 (WSH) 是一種 Windows 管理工具。WSH 為宿主腳本創建環境。也就是說,當腳本到達您的計算機時,WSH 充當主機的一部分,它使對象和服務可用于腳本,并提供一系列腳本執行指南。此外,Windows 腳本宿主還管理安全性并調用相應的腳本引擎。對于與 WSH 兼容的腳本引擎來說,WSH 是與語言無關的。它為 Windows 平臺提供了簡單、功能強大而又靈活的腳本編寫功能,允許您從 Windows 桌面和命令提示符運行腳本。Windows 腳本宿主非常適合于非交互式腳本編寫的需要,如腳本登錄、腳本管理和計算機自動化。WSH對象和服務Windows 腳本宿主為直接操縱腳本執行提供了若干個對象,并為其他操作提供了 helper 函數。使用這些對象和服務,可以完成如下任務:
- 將消息打印到屏幕上
- 運行基本函數,如 CreateObject 和 GetObject
- 映射網絡驅動器
- 與打印機連接
- 檢索并修改環境變量
- 修改注冊表項
腳本文件的類型
獨立的腳本文件有一些不同的格式,每種格式都有自己的擴展名。
擴 展 名 | 腳 本 類 型 | 描 述 |
.bat | MS-DOS 批處理文件 | MS-DOS 操作系統的批處理文件 |
.js | JScript 文件 | Windows 腳本 |
.vbs | VBScript 文件 | Windows 腳本 |
.wsf | Windows 腳本宿主文件 | 一個 Windows 腳本的容器或項目文件。WSH 2.0 或更高版本支持 |
.wsh | Windows 腳本宿主文件 | 一個腳本文件的屬性文件。WSH 1.0 或更高版本支持 |
這就是 Windows 腳本宿主文件(WSF 文件)的有用之處。WSF 文件可以包含其他的腳本文件作為其腳本的一部分。這意味著多個 WSF 文件可以引用創建并保存在同一地點的庫和有用的函數
使用Windows腳本宿主運行腳本
WSH 提供了兩個用于執行腳本的接口,一個用于命令行,一個用于 Windows 環境。這兩個接口各使用不同的宿主程序作為 VBScript 引擎:● cscript.exe:用于在命令行中運行腳本● wscript.exe:用于在 Windows 環境中運行腳本之所以有兩個宿主程序,是因為 cscript.exe 被設計為從控制臺窗口啟動(一般來說是 Windows 中的 MS-DOS 窗口),而 wscript.exe 則用于直接與 Windows GUI 進行交互。這兩者就功能來講幾乎沒有區別。1、命令行執行執行腳本文件的命令行界面,cscript.exe 調用方法如下:1. 打開 Run 對話框(按下窗口鍵+R)或某個命令窗口(在 Windows 9x 中,可以依次單擊 Start|Programs|DOS Prompt;在 Windows NT 中,依次單擊 Start|Programs|Command Prompt;在 Vista/XP 中,依次單擊 Start|All Programs|Accessories|Command Prompt)。注意,在使用 Windows Vista 時,打開 Command Prompt 需要系統管理員權限。最簡單的方法是以系統管理員身份在開始菜單中用鼠標右鍵單擊 Command Prompt 并選擇 Run。2. 執行腳本如下:cscript c:\folderName\YourScriptName.vbs如果直接在命令行中運行 cscript.exe 時不加參數,就只會得到使用幫助信息:用法:CScript scriptname.extension [option...] [arguments...]選項://B 批模式:不顯示腳本錯誤及提示信息//D 啟用 Active Debugging//E:engine 使用執行腳本的引擎//H:CScript 將默認的腳本宿主改為 CScript.exe//H:WScript 將默認的腳本宿主改為 WScript.exe (默認)//I 交互模式(默認,與 //B 相對)//Job:xxxx 執行一個 WSF 工作//Logo 顯示徽標(默認)//Nologo 不顯示徽標:執行時不顯示標志//S 為該用戶保存當前命令行選項//T:nn 超時設定秒:允許腳本運行的最長時間//X 在調試器中執行腳本//U 用 Unicode 表示來自控制臺的重定向 I/O2、在Windows環境中執行WSH執行腳本文件的 Windows GUI 界面是 wscript.exe,它允許以下列幾種方式執行文件:● 如果文件的類型注冊為在 WSH 中執行,就可以直接在文件夾窗口或桌面上雙擊這些文件的圖標來執行?!?如果使用 Run 命令對話框,那么就只要輸入腳本的完整路徑和名稱即可。在 Run 命令對話框中,可以調用 wscript.exe。執行腳本如下:wscript c:\folderName\YourScriptName.vbs如果在命令行提示符下運行 wscript.exe,就不會有輸出信息,而是會出現一個如圖所示的對話框。該對話框提供了最基本的定制選項。單擊 OK 按鈕后,將不會有任何反應。在系統級定制腳本行為的唯一方法就是使用先前曾詳細介紹的 cscript 選項。
WScript對象
WSH 對象模型的基礎就是 WScript 對象。這個對象提供了使開發人員能夠訪問各種信息的屬性和方法,如:● 將要執行的腳本的名稱和路徑信息● Microsoft 腳本引擎的版本● 與外部對象的鏈接● 與用戶的交互● 延遲或中斷腳本執行的能力1、WScript屬性WScript 對象具有下列屬性:● Arguments● FullName● Interactive● Name● Path● ScriptFullName● ScriptName● StdErr● StdIn● StdOut● Version1.ArgumentsArguments 屬性包含了 WshArguments 對象(一個參數集合)。從該集合中獲取單個參數時,使用由 0 開始的索引。例、新建一個Argu.vbs腳本文件,寫入如下代碼
Dim?objArgs,i,sum,s1,s2Set?objArgs?=?WScript.Argumentss1?=?objArgs.Item(0)s2?=?objArgs.Item(1)sum?=?0For?i?=?s1?To?s2sum?=?sum?+?iNextWScript.Echo?"從"&s1&"到"&s2&"之間的整數和為:"&sum
在打開命令提示符,進入到當前腳本文件所在路徑,輸入cscript Argu.vbs 1 100 //nologo按回車,即可算出從1到100之間的整數和為:50502.FullNameFullName 屬性是一個只讀的字符串,它代表宿主可執行文件(cscript.exe 或 wscript.exe)的有效完整路徑。下面的代碼使用了 FullName 屬性。WScript.Echo WScript.FullName3.InteractiveInteractive 屬性設置腳本的模式,或識別腳本的模式。使用該屬性會返回一個布爾值。有兩種可用的模式:批處理模式和交互模式??梢允褂?WSH 命令行開關腳本模式//I(交互模式)和//B(批處理模式)來設置腳本模式。4.NameName 屬性返回 WScript 對象(宿主可執行文件)的名稱,它是一個只讀的字符串。下面的代碼使用了 Name 屬性:WScript.Echo WScript.Name5.PathPath 屬性返回包含宿主可執行文件(cscript.exe 或 wscript.exe)的目錄名。該屬性返回一個只讀的字符串。下面的 VBScript 代碼將顯示可執行文件所在的目錄名:WScript.Echo WScript.Path6.ScriptFullNameScriptFullName 屬性返回當前正在運行的腳本的完整路徑。該屬性返回一個只讀的字符串。7.ScriptNameScriptName 屬性返回當前正在運行的腳本的文件名。該屬性返回一個只讀的字符串。8.StdErrStdErr 屬性開放當前腳本的只寫的錯誤輸出流。該屬性返回一個標識標準錯誤流的對象。只有使用 cscript.exe 時才能訪問 StdIn、StdOut 和 StdErr 流。使用 wscript.exe 時如果想訪問這些流就會產生一個錯誤。9.StdInStdIn 屬性開放當前腳本的只讀的輸入流。該屬性返回一個標識標準錯誤流的對象。10.StdOutStdOut 屬性開放當前腳本的只寫的錯誤輸出流。該屬性返回一個標識標準錯誤流的對象。下面的示例使用了這三種類型的內建流打印匹配某一特定擴展名的所有文件列表。這是通過將 DOS 的 dir 命令結果使用管道重定向到過濾器腳本來實現的,其中將擴展名字符串作為參數。例、新建一個filter.vbs腳本文件,寫入如下代碼
'用法:dir?|?csript?filter.vbs?ext'?ext:需要匹配的擴展名Dim?StreamOut,StreamIn,StreamErrSet?StreamOut?=?WScript.StdOutSet?StreamIn?=?WScript.StdInSet?StreamErr?=?WScript.StdErrDim?strExt,strLineInDim?intMatchstrExt?=?WScript.Arguments(0)intMatch?=?0?Do?While?Not?StreamIn.AtEndOfStream?strLineIn?=?StreamIn.ReadLine?If?StrComp(strExt,Right(strLineIn,Len(strExt)),vbTextCompare)=0?Then??StreamOut.WriteLine?strLineIn??intMatch?=?intMatch?+?1?End?IfLoopIf?intMatch?=?0?Then?StreamErr.WriteLine?"未找到"&strExt&"文件"End?if
在打開命令提示符,進入到當前腳本文件所在路徑,輸入dir /s | filter.vbs vbs //nologo按回車,即可查詢當前目錄及子目錄下的所有擴展名為.vbs的文件這個示例中使用 StdIn、StdOut 和 StdErr 進行消息的處理,所以不僅能將匹配的文件打印在屏幕上,也能夠將輸出結果發送到一個文本文件或其他有重定向或附加管道功能的應用程序中。11.Version該屬性返回 WSH 的版本。下面的代碼顯示當前 WSH 的版本。WScript.Echo WScript.Version2、WScript方法WScript 對象具有下列方法:● CreateObject● ConnectObject● DisconnectObject● GetObject● Echo● Quit● Sleep1.CreateObjectWScript 對象的這個方法用于創建一個 COM 對象。object.CreateObject(strProgID[,strPrefix])
- object:WScript 對象。
- strProgID:值為字符串,表示想要創建的對象的程序標識符(ProgID)。
- strPrefix:可選。值為字符串,表示函數前綴。
使用 CreateObject 方法和 strPrefix 參數創建的對象是已連接對象。對象被創建后,其輸出接口與腳本文件相連接。每個事件函數都由這個前綴加上事件的名稱來命名。如果創建對象時沒有使用 strPrefix 參數,也可以使用 ConnectObject 方法同步對象的事件。只要對象產生一個事件,WSH 就會調用一個子程序,其名稱是 strPrefix 加上事件的名稱。2.ConnectObject該方法將對象的事件源連接到具有給定前綴的函數。object.ConnectObject(strObject, strPrefix)
- object:WScript 對象。
- strObject:必需的。表示想要連接的對象名稱的字符串。
- strPrefix:必需的。表示函數前綴的字符串。
同步一個對象的事件時,已連接對象是很有用的。對象被創建后,ConnectObject 方法將對象的輸出接口連接到腳本文件。事件函數的名稱就是這個前綴加上事件的名稱。3.DisconnectObject該方法用于斷開已連接對象的事件源的連接。object.DisconnectObject(obj)
- object:WScript 對象。
- obj:表示想要斷開連接的對象名稱的字符串。
斷開一個對象的連接意味著 WSH 無法再響應它的事件。但是,有一點很重要,那就是斷開連接后對象仍然能夠產生事件。還要注意的是,如果指定的對象尚未連接,DisconnectObject 方法就不會做任何事。4.GetObjectGetObject 方法根據指定的 ProgID 獲取某個已存在對象,或從文件創建一個新的對象。object.GetObject(strPathname [,strProgID], [strPrefix])
- object:WScript 對象。
- strPathname:包含將對象保存到磁盤的文件所使用的完整的有效路徑名。
- strProgID:可選。值為字符串,表示想要創建的對象的程序標識符(ProgID)。
- strPrefix:可選。進行對象事件同步時有用。如果提供了 strPrefix 參數,WSH 就會在創建對象之后將對象的輸出接口連接到腳本文件。
如果內存中存在對象的一個實例,或者想從文件創建一個對象,都需要使用 GetObject方法。GetObject 方法適用于所有 COM 類,與創建對象使用的腳本語言無關。如果內存不存在對象的實例,也不想從文件創建對象,就可以使用 CreateObject 方法。5.Echo該方法輸出一個消息框或一個命令控制臺窗口。object.Echo [Arg1] [,Arg2] [,Arg3] ...
- object:WScript 對象。
- Arg1、Arg2、Arg3、……:可選。表示要顯示項目的列表。
根據當前使用的 WSH 引擎的不同,Echo 方法輸出的類型也有所變化。6.Quit該方法強制腳本在任意時刻立即停止執行。
- object.Quit([intErrorCode])
- object:WScript 對象。
- intErrorCode:可選。返回一個整數值,作為進程的返回碼。如果忽略 intErrorCode 參數,就不會有返回值。
Quit 方法可以用于返回一個可選的錯誤代碼。如果 Quit 方法是腳本中的最后一條命令(并且不需要返回一個非零值),就可以不使用任何參數,這樣腳本就會正常退出。7.Sleep該方法將腳本的執行掛起一段時間,然后接著執行。object.Sleep(intTime)
- object:WScript 對象。
- intTime:這是一個整數值,表示希望腳本進程保持非活躍狀態的時間間隔(以毫秒為單位)。
使用這個方法時,運行腳本的線程被掛起,占用的 CPU 被釋放。當間隔時間到,就會繼續恢復執行。要想被事件所觸發,腳本必須持續活躍,因為已經結束執行的腳本是肯定不能檢測到任何事件的。腳本所處理的事件在腳本休眠時仍然會被執行。向 Sleep 方法傳遞 0 或-1 作為參數,就不會導致腳本不確定性地掛起。例、新建一個time.vbs腳本文件,寫入如下代碼
Do While TrueWScript.Echo TimeWScript.Sleep 1000Loop
在打開命令提示符,進入到當前腳本文件所在路徑,輸入cscript time.vbs //nologo按回車,即可每過一秒顯示當前的時間
WshArguments對象
編程過程中,參數的使用是一種非常有益的機制,可以給腳本提供輸入以支持它的工作。如果考慮在 DOS 提示符下工作,那么多數命令行可執行文件都使用參數來確定要做的事情。創建使用參數的腳本是編寫可重用代碼的一個良好開端。創建設計用于在命令行中執行的腳本的開發人員會立竿見影地感受到使用 Arguments 屬性帶來的好處。不過,在 WSH 中,還有更好的理由來使用這個對象,因為這就是拖放功能得以實現的原因。使用這個對象的最后一個好處就是它允許開發人員在其他腳本中重用腳本代碼,只要以命令行運行的方式運行想重用的腳本,并給它傳遞可能在運行時需要的參數即可。1、訪問 WshArgument 對象它是通過使用 WScript.Arguments 屬性來實現的。Set objArgs = WScript.Arguments2、WshArguments對象的屬性WshArgument 對象是一個由 WScript 對象的 Arguments 屬性返回的集合(WScript.Arguments)。訪問命令行參數集合有下列三種方法:
- 使用 WshArguments 對象訪問整個參數集合。
- 使用 WshNamed 對象訪問有名字的參數。
- 使用 WshUnnamed 對象訪問沒有名字的參數。
下面的例子是一個遍歷 WshArguments 集合的簡單循環,依次顯示每個元素:
Set objArgs = WScript. ArgumentsFor x = 0 to objArgs.Count - 1WScript.Echo objArgs(x)Next
WshShell對象
Windows 腳本宿主提供了一種便捷的方式,可以用于獲取系統環境變量的訪問、創建快捷方式、訪問 Windows 的特殊文件夾,如 Windows Desktop,以及添加或刪除注冊表條目。還可以使用 Shell 對象的功能創建更多的定制對話框以進行用戶交互。1、訪問WshShell對象要使用下面這一節中將要列出的屬性,程序員必須創建一個 WScript.Shell 對象的實例。這樣以后對 WshShell 對象的引用實際就是對新創建實例的引用。Set WshShell= WScript.CreateObject( "WScript.Shell" )2、WshShell對象的屬性WshShell 對象有三個屬性:● CurrentDirectory● Environment● SpecialFolders1.CurrentDirectory該屬性獲取或更改當前活動目錄。object.CurrentDirectory
Dim WshShellSet WshShell = WScript.CreateObject("WScript.Shell")WScript.Echo WshShell.CurrentDirectory
2.Environment該屬性返回 WshEnvironment 對象(一個環境變量集合)。object.Environment ([strType])
- object:WshShell 對象。
- strType:可選。指定環境變量的位置。
Environment 屬性包含 WshEnvironment 對象(一個環境變量集合)。如果指定了 strType,就指定了環境變量所在的級別的值:
- System
- User
- Volatile
- Process
如果沒有指定 strType,Environment 屬性就會根據不同的操作系統返回不同的環境變量類型。要注意的是,腳本有可能訪問其他應用程序所設置的環境變量。下面是一個關于在代碼中如何使用上面列出的這些變量的示例。該示例返回系統中存在的處理器個數。
Set?WshShell?=?CreateObject("Wscript.Shell")Set?WshSysEnv?=?WshShell.EnvironmentWScript.Echo?WshSysEnv("NUMBER_OF_PROCESSORS")
3.SpecialFolders該屬性返回一個SpecialFolders對象(一個特殊文件夾集合)object.SpecialFolders(objWshSpecialFolders)
- object:WshShell 對象。
- onjWshSpecialFolders:特殊文件夾的名稱。
WshSpecialFolders 對象是一個集合,它包含所有的 Windows 特殊文件夾。特殊文件夾的名稱用于索引集合以獲取想要的具體文件夾。如果被請求的文件夾(strFolderName)不可用,SpecialFolder 屬性將返回一個空字符串。下面是可用的特殊文件夾:
- AllUsersDesktop
- AllUsersStartMenu
- AllUsersPrograms
- AllUsersStartup
- Desktop
- Favorites
- Fonts
- MyDocuments
- NetHood
- PrintHood
- Programs
- Recent
- SendTo
- StartMenu
- Startup
- Templates
下面的代碼用于獲取 Start Menu 文件夾并在 strDeskTop 變量中保存路徑以備后面的使用。strDesktop = WshShell.SpecialFolders("StartMenu")3、WshShell對象的方法WshShell 對象有 11 個方法。所有這些方法都與操作系統 shell 相關,可以用于控制 Windows 注冊表,也可以創建彈出式消息框和快捷方式以及激活和控制正在運行的應用程序:● Run● SendKeys● AppActivate● exec● CreateShortcut● Popup●
expandenvironmentstrings● LogEvent● RegRead● RegWrite● RegDelete1.RunRun 方法在一個新進程中運行一個程序。object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])object:WshShell 對象。
- strCommand:一個字符串,表示想要運行的命令行,必須包含所有要傳遞給可
- 執行文件的參數。
- intWindowStyle:可選。一個整數值,表示程序窗口的外觀。并不是所有的程序
- 都使用這一信息。
- bWaitOnReturn:可選。一個 Boolean 值,表示腳本在其下一條語句之前是否需要等待程序結束。如果設置為 True,腳本一直停止執行直到程序結束,Run 返回任一個由程序返回的錯誤代碼。如果設置為 False(默認),程序啟動后,Run 方法立即返回 0(這不是錯誤代碼)。
Run 方法返回一個整數。該方法使用一個新的 Windows 進程啟動運行一個程序??梢宰屇_本等待程序運行完畢再繼續執行,這樣就可以是腳本和程序同步執行。如果將某個文件類型成功注冊到某一個特定程序,那么對該文件調用 Run 方法就會啟動注冊的程序。例如,對一個*.txt 文件調用 Run 方法,就會啟動記事本程序并將文本文件加載到其中。下表列出了 intWindowStyle 的可用值。
IntWindowStyle | 描 述 |
0 | 隱藏當前窗口并激活另一個窗口 |
1 | 激活并顯示一個窗口如果該窗口處于最小化或最大化狀態,系統將恢復其原始尺寸如果是初次顯示該窗口,應用程序就應該指定這個標志 |
2 | 激活并以最小化狀態顯示窗口 |
3 | 激活并以最大化狀態顯示窗口 |
4 | 以其最近位置和尺寸顯示一個窗口活躍的窗口將繼續保持活躍 |
5 | 以其當前位置和尺寸顯示一個窗口 |
6 | 最小化指定的窗口并將其激活為 Z 序列中僅次于頂層的窗口 |
7 | 以最小化形式顯示窗口活躍的窗口將繼續保持活躍 |
8 | 以其當前狀態顯示窗口活躍的窗口將繼續保持活躍 |
9 | 激活并顯示窗口如果該窗口處于最小化或最大化狀態,系統將恢復其原始尺寸如果要恢復一個最小化窗口,應用程序就應該指定這個標志 |
10 | 根據啟動應用程序的程序狀態設置窗口顯示的狀態 |
下面的代碼打開一個命令提示符窗口并顯示驅動器 C:的內容。
Dim?WshShellSet?WshShell?=?CreateObject("WScript.Shell")WshShell.Run?"cmd?/K?cd?/d?c:\?&?Dir",9Set?WshShell?=?Nothing
2.SendKeysSendkeys 方法向活躍窗口發送一次或多次擊鍵(仿佛來自鍵盤)。object.SendKeys(string)
- object:WshShell 對象。
- string:一個字符串值,表示想要發送的擊鍵。
要發送一個單獨的鍵盤字符,只要將該字符本身作為字符串參數發送即可。例如,要發送字母“v”。要發送一個空格,可以發送“ ”。也可以使用 SendKeys 方法發送多次擊鍵??梢砸来渭尤朊看螕翩I,形成一個序列,創建一個復合的字符串參數來表示擊鍵的序列。例如,要發送擊鍵 x、y 和 z,可以發送字符串參數“xyz”SendKeys 方法使用某些字符作為其他字符的限定符。這些特殊的字符包括圓括弧、尖括弧、花括弧,以及下表列出的一些字符:
在 SendKeys 中使用方括弧“*+”時,沒有什么特殊含義,但為了滿足那些為它們指定了特殊含義的應用程序(例如 Dynamic Data Exchange)的需要,仍需要將它們包含在花括弧中。要發送方括弧字符,可以使用字符串數組“,*-”發送左括弧,使用字符串數組“,+-”發送右括弧。要發送花括弧字符,可以發送字符串參數“,,-”發送左括弧,發送字符串“,--”發送右括弧。某些擊鍵不產生任何字符(如 Enter 和 Tab),某些擊鍵代表一些動作(如 Backspace 和 Break)。要發送這些擊鍵,可以發送下表列出的這些字符串參數。
Backspace | {BACKSPACE}, {BS}, or {BKSP} |
Break | {BREAK} |
Caps Lock | {CAPSLOCK} |
Del or delete | {delete} or {DEL} |
Down Arrow | {DOWN} |
End | {END} |
Enter | {ENTER} or ~ |
Esc | {ESC} |
Help | {HELP} |
Home | {HOME} |
Ins or insert | {insert} or {INS} |
Left Arrow | {LEFT} |
Num Lock | {NUMLOCK} |
Page Down | {PGDN} |
Page Up | {PGUP} |
Print Screen | {PRTSC} |
Right Arrow | {RIGHT} |
Scroll Lock | {SCROLLLOCK} |
Tab | {TAB} |
Up Arrow | {UP} |
F1 | {F1} |
F2 | {F2} |
F3 | {F3} |
F4 | {F4} |
F5 | {F5} |
F6 | {F6} |
F7 | {F7} |
F8 | {F8} |
F9 | {F9} |
F10 | {F10} |
F11 | {F11} |
F12 | {F12} |
要發送常規字符與 Shift、Ctrl 或 Alt 鍵的組合,就需要創建一個復合的字符串參數以表示這種擊鍵組合??梢栽诔R帗翩I之前加上下表中的一個或多個特殊字符。
鍵 | 特 殊 字 符 |
Alt | % |
Ctrl | ^ |
Shift | + |
要表示按下其他某些鍵的同時,必須按下 Shift、Ctrl 或 Alt 鍵的情況,可以修改圓括弧中包含的擊鍵序列創建一個復合的字符串參數。例如下面這些擊鍵以及相應的操作:· 按下 Shift 的同時按下 V 和 B,發送字符串參數"+(VB)"?!?按下 Shift 的同時按下 V,然后長按 B(不要按下 Shift),發送字符串參數"+VB"??梢允褂?SendKeys 方法發送一個單獨的擊鍵被按下若干次所構成的擊鍵模式??梢詣摻ㄒ粋€復合的字符串參數,指定想要重復的擊鍵,后面再跟上想要重復的次數。使用的復合字符串參數形如{擊鍵 次數}。例如,要發送“V”被按下 10 次的擊鍵模式,可以發送字符串參數“{V 10}”單個擊鍵被按下若干次的模式是唯一的一種能夠發送的擊鍵模式。例如,可以發送 10次“V”,但不能發送 10 次“Ctrl+V”。注意,不能向應用程序發送 Print Screen 鍵{PRTSC}。例1、模擬鍵盤在記事本中輸入"Hello"并另存為當前文件夾,保存名稱為"hello.txt",并退出。
Dim WshShellSet WshShell = CreateObject("WScript.Shell")WshShell.Run "notepad"WScript.Sleep 1000WshShell.SendKeys "H"WScript.Sleep 200WshShell.SendKeys "e"WScript.Sleep 200WshShell.SendKeys "l"WScript.Sleep 200WshShell.SendKeys "l"WScript.Sleep 200WshShell.SendKeys "o"WScript.Sleep 200WshShell.SendKeys "~"WScript.Sleep 200WshShell.SendKeys "%FS"WScript.Sleep 200 WshShell.SendKeys "Hello.txt"WScript.Sleep 200WshShell.SendKeys "%S"WScript.Sleep 200WshShell.SendKeys "%FX"
例2、模擬鍵盤在計算器中計算"210*56="
Dim WshShellSet WshShell = CreateObject("WScript.Shell")WshShell.Run "calc"WScript.Sleep 3000WshShell.SendKeys "2"WScript.Sleep 200WshShell.SendKeys "1"WScript.Sleep 200WshShell.SendKeys "0"WScript.Sleep 200WshShell.SendKeys "{*}"WScript.Sleep 200WshShell.SendKeys "5"WScript.Sleep 200WshShell.SendKeys "6"WScript.Sleep 200WshShell.SendKeys "{=}"
3.AppActivate這個方法可以用于激活一個指定的已經打開的應用程序窗口。object.AppActivate title
- object:WshShell 對象。
- title:指定要激活的應用程序。這可以是一個包含應用程序標題的字符串(就像出現在標題欄中的那樣)或應用程序的進程 ID。
AppActivate方法返回一個Boolean類型的值,標志著過程調用是否成功。這個方法用于將焦點切換至指定名稱的應用程序或窗口。方法的調用不影響應用程序的最大化或最小化狀態。當進行了切換焦點(或關閉窗口)的動作之后,焦點就會從已經獲得焦點的應用程序上移走。為了確定要激活的應用程序,指定的標題名稱會與每個正在運行的應用程序的標題字符串做比較。如果沒有準確的匹配,那么具有以 title 所指定的值開始的標題字符串的應用程序就會被激活。如果還是沒有能找到合適的應用程序,那么具有以 title 所指定的值結束的標題字符串的應用程序就會被激活。如果存在多個名為 title 所指定的值的應用程序實例,就會任意激活其中的一個。但是,無法控制具體選擇哪一個。4.ExecExec 方法在一個子命令解釋器中運行一個應用程序,子命令解釋器提供對 StdIn、StdOut 和 StdErr 流的訪問。object.exec(strCommand)
- object:WshShell 對象。
- strCommand:一個字符串值,表示用于運行腳本的命令行。
exec 方法返回一個 WshScriptExec 對象,該對象提供使用 exec 運行的腳本的狀態和錯誤信息,也提供對 StdIn、StdOut 和 StdErr 通道的訪問。exec 方法只能執行命令行應用程序,并且不能用于運行遠程腳本。5.CreateShortcut該方法可以用于創建一個新的快捷方式,或打開一個已有的快捷方式。object.CreateShortcut(strPathname)
- object:WshShell 對象。
- strPathname:一個表示要創建的快捷方式的路徑名。
CreateShortcut 方法返回一個 WshShortcut 對象或一個 WshURLShortcut 對象。調用 CreateShortcut 方法不會導致快捷方式的真正創建,而是將快捷方式對象以及對其所做的修改保存在內存中,直到使用 Save 方法將其保存至磁盤。要真正創建一個快捷方式,必須完成下列三個步驟:(1) 創建 WshShortcut 對象的一個實例。(2) 初始化其屬性。(3) 使用 Save 方法將其保存到磁盤。容易出問題的是將參數放到快捷方式對象的 TargetPath 屬性中,這通常是無用的??旖莘绞降乃袇刀急仨毞旁?Arguments 屬性中。
set?WshShell?=?WScript.CreateObject("WScript.Shell")strDesktop?=?WshShell.SpecialFolders("Desktop")set?oShellLink?=?WshShell.CreateShortcut(strDesktop?&?"\Shortcut?script.lnk")???'保存的路徑及名稱,快捷方式擴展名為.lnkoShellLink.TargetPath?=?WScript.ScriptFullName????'創建快捷方式目標的路徑及文件名oShellLink.WindowStyle?=?1oShellLink.Hotkey?=?"CTRL+ALT+S"????'打開快捷方式的快捷鍵oShellLink.IconLocation?=?"calc.exe,?0"????'圖標文件的所在路徑及名稱oShellLink.Description?=?"Shortcut?to?Notepad"????'快捷方式的說明oShellLink.WorkingDirectory?=?strDesktopoShellLink.Save
6.Popup該方法用于在彈出式消息框中顯示文本。intButton = object.Popup(strText,[nSecondsToWait],[strTitle],[nType])
- object:WshShell 對象。
- strText:一個字符串值,包含了想要顯示在彈出式消息框中的文本。
- nSecondsToWait:可選。一個數值,表示想要彈出式消息框顯示的最長時間(以秒為單位)。如果 nSecondToWait 等于 0(默認值),彈出式消息框就一直可見,直到被關閉。如果 nSecondToWait 大于 0,那么彈出式消息框就在 nSecondToWait 秒后關閉。
- strTitle:可選。一個字符串值,包含了想要出現在彈出式消息框標題欄中的文本。如果沒有提供 strTitle 這個參數,彈出式消息框的標題就會被設置為默認的字符串―Windows script Host‖。
- nType:可選。一個數值,表示想在彈出式消息框中出現的按鈕和圖標的類型。這些決定了消息框的使用場合和用途。nType 的功能與 Microsoft Win32 應用程序編程接口中的 MessageBox 函數相同。下面的表格顯示了各種值和它們的含義??梢院喜⒘斜碇胁煌闹但@得各種不同的結果。
- IntButton:一個整數值,表示關閉消息框時單擊的按鈕的序號,這個值是由 Popup 方法返回的。
無論使用那種宿主可執行文件(wscript.exe 或 cscript.exe)運行腳本,都可以使用 Popup方法顯示一個消息框。要以諸如 HeBrew 或 Arabic 這樣的 RTL 語言的格式(從右至左)正確顯示文本,可以在 nType 參數之前加上 h00100000(十進制的 1048576)。按鈕類型:
值 | 描 述 |
0 | 顯示 OK 按鈕 |
1 | 顯示 OK 和 Cancel 按鈕 |
2 | 顯示 Abort、Retry 和 Ignore 按鈕 |
3 | 顯示 Yes、No 和 Cancel 按鈕 |
4 | 顯示 Yes 和 No 按鈕 |
5 | 顯示 Retry 和 Cancel 按鈕 |
圖標類型:
值 | 描 述 |
16 | 顯示終止(Stop Mark)圖標 |
32 | 顯示問號(Question Mark)圖標 |
48 | 顯示嘆號(Exclamation Mark)圖標 |
64 | 顯示提示信息(Information Mark)圖標 |
IntButton 的返回值代表已單擊的按鈕編號。如果在 nSecondsToWait 秒之前沒有單擊任何按鈕,inButton 就被設置為-1.關閉消息框時所單擊的按鈕的編號:
值 | 描 述 |
1 | OK 按鈕 |
2 | Cancel 按鈕 |
3 | Abort 按鈕 |
4 | Retry 按鈕 |
5 | Ignore 按鈕 |
6 | Yes 按鈕 |
7 | No 按鈕 |
下面的代碼顯示了各種消息框按鈕和圖標的使用:
Sub?questionDim?WshShell,?BtnCodeSet?WshShell?=?WScript.CreateObject("WScript.Shell")'消息框文本為"Do?you?like?this?code?";消息框標題為"Quick?survey";消息框的顯示時間為7秒;顯示Yes和No按鈕(4);顯示問號圖標(32)BtnCode?=?WshShell.Popup("Do?you?like?this?code?",?7,?"Quick?survey:",?4?+?32)???select?Case?BtnCodecase?6?WScript.Echo?"Glad?to?hear?it?-?Thanks!"????'點擊Yes輸出文字case?7?WScript.Echo?"I’m?sorry?you?didn’t?like?it."????'點擊No輸出文字case?-1?WScript.Echo?"Helllloooooooo?"?:Call?question????'7秒后無任何點擊輸出文字,并調用question過程End?SelectEnd?SubCall?question
7.ExpandEnvironmentStrings該方法返回環境變量的擴充值。object.ExpandEnvironmentStrings(strString)
- object:WshShell 對象。
- strString:一個字符串值,表示想要擴充的環境變量的名稱。
這個方法只對 PROCESS 環境空間內定義的環境變量進行擴充。環境變量的名稱必須以“%”包圍,并且是大小寫不敏感的。
set WshShell = WScript.CreateObject("WScript.Shell")WScript.Echo "The path to WinDir is " & WshShell.ExpandEnvironmentStrings("%WinDir%")
8.LogEventLogEvent 方法向日志文件中添加一個事件條目。object.LogEvent(intType, strMessage [,strTarget])
- object:WshShell 對象。
- intType:表示事件類型的整數值。
- strMessage:包含日志條目文本的字符串值。
- strTarget:可選。一個字符串值,表示事件日志所存儲的計算機系統名稱(默認的是本地計算機系統)。
這個方法用于返回一個 Boolean 值(如果事件被成功記錄,就返回 True,否則返回 False)。有 6 種事件類型:
類 型 | 值 |
0 | SUCCESS |
1 | ERROR |
2 | WARNING |
4 | INFORMATION |
8 | AUDIT_SUCCESS |
16 | AUDIT_FAILURE |
下面的代碼顯示了 LogEvent 的運行,它基于事件的成功與否對其進行記錄。
Set WshShell = WScript.CreateObject("WScript.Shell")'assume that rS contains a return code'from another part of the codeif rS thenWshShell.LogEvent 0, "script Completed Successfully"elseWshShell.LogEvent 1, "script failed"end if
9.RegRead該方法返回注冊表中一個鍵或鍵值的名稱。object.RegRead(strName)
- object:WshShell 對象。
- strName:一個字符串值,表示想獲得的鍵或鍵值的名稱。
RegRead 方法返回的值有 5 種類型
類 型 | 描 述 | 形 式 |
REG_SZ | 字符串 | 字符串 |
REG_DWORD | 數字 | 整數 |
REG_BINARY | 二進制值 | 整數構成的 VBArray |
REG_EXPAND _ SZ | 可擴充字符串(例如%windir%\\notepad.exe) | 字符串 |
REG_MULTI_SZ | 字符串數組 | 字符串構成的 VBArray |
如果 strName 以反斜杠結尾,就可以指定鍵名,如果不使用反斜杠,就可以指定鍵值名。完整的有效鍵名和鍵值名是以一個根鍵的名稱作為前綴的。一個鍵值包含三部分:①名稱(Name)②數據類型(Data Type)③值(Value)如果指定了鍵名(相對于鍵值名來說),RegRead 就會返回默認的值。所以要讀取一個鍵的默認值,只要指定鍵的名稱即可。完整的有效鍵名和鍵值名是以一個根鍵的名稱作為起始的。使用 RegRead 方法時,也可以使用根鍵名的縮寫形式。5 種可能使用的根鍵:
根 鍵 名 | 縮 寫 |
HKEY_CURRENT_USER | HKCU |
HKEY_LOCAL_MACHINE | HKLM |
HKEY_CLASSES_ROOT | HKCR |
HKEY_USERS | HKEY_USERS |
HKEY_CURRENT_CONFIG | HKEY_CURRENT_CONFIG |
10.RegWrite該方法可以創建一個新鍵,給現有鍵添加另一個鍵值名(并指定一個值),或修改現有鍵值名的值。object.RegWrite(strName, anyValue [,strType])
- object:WshShell 對象。
- strName:一個字符串值,表示想創建、添加或修改的鍵名、鍵值名或鍵值。
- anyValue:想要創建的新鍵的名稱,或想添加到現有鍵的鍵值名,或想指定給某個現有鍵值名的新鍵值。
- strType:可選。一個表示鍵值數據類型的字符串。
如果 strName 以反斜杠結尾,就可以指定鍵名,如果不使用反斜杠,就可以指定鍵值名。RegWrite 方法自動將參數 anyValue 轉換成一個字符串或一個整數,而由 strType 的值決定其數據類型(是字符串還是整數)。strType 方法的可用選項:
轉換至 | strType |
字符串 | REG_SZ |
字符串 | REG_EXPAND_SZ |
整數 | REG_DWORD |
整數 | REG_BINARY |
RegWrite 方法不支持 REG_MULTI_SZ 類型。RegWrite 最多寫入一個 DWORD 或 REG_BINARY 值,該方法不支持更大的值。完整的有效鍵名和鍵值名是以一個根鍵的名稱作為起始的。使用 RegWrite 方法時,也可以使用根鍵名的縮寫形式。strType 的4種可能被指定的數據類型:
類 型 | 描 述 | 形 式 |
REG_SZ | 字符串 | 字符串 |
REG_DWORD | 數字 | 整數 |
REG_BINARY | 二進制值 | 整數構成的 VBArray |
REG_EXPAND _ SZ | 可擴充字符串(例如%windir%\\notepad.exe) | 字符串 |
11.RegDelete該方法從注冊表中刪除一個鍵或其鍵值。object.RegDelete(strName)
- object:WshShell 對象。
- strName:一個字符串值,表示要刪除的注冊表鍵或鍵值的名稱。
如果 strName 以反斜杠結尾,就可以指定鍵名,如果不使用反斜杠,就可以指定鍵值名。完整的有效鍵名和鍵值名是以一個根鍵的名稱作為前綴的。使用 RegDelete 方法時,也可以使用根鍵名的縮寫形式。下面的腳本將創建、讀取并刪除 Windows 注冊表鍵。
Dim WshShell, bKeySet WshShell = WScript.CreateObject("WScript.Shell")WshShell.RegWrite "HKCU\Software\WROX\VBScript\", 1, "REG_BINARY"WshShell.RegWrite "HKCU\Software\WROX\VBScript\ProgRef","VBS_is_great","REG_SZ"bKey = WshShell.RegRead("HKCU\Software\WROX\VBScript\")WScript.Echo WshShell.RegRead("HKCU\Software\WROX\VBScript\ProgRef")WshShell.RegDelete "HKCU\Software\WROX\VBScript\ProgRef"WshShell.RegDelete "HKCU\Software\WROX\VBScript\"WshShell.RegDelete "HKCU\Software\WROX\"
在修改注冊表設置時,需要特別的小心。對注冊表進行不當的修改可能會導致系統變得不穩定,甚至使其變得完全不可用。如果不了解注冊表的內部工作機制,那么強烈建議在實際操作之前就此問題閱讀一些相關的資料。
WshNamed對象
WshName對象提供從命令行對有名稱參數的訪問。WshArguments 對象的 Named 屬性返回 WshNamed 對象,這是一個有名稱參數的集合。這個集合使用了參數名稱作為索引來獲取每個參數的值。訪問命令行參數集合有下列三種方法:① 使用 WshAruments 對象訪問整個參數集合。② 使用 WshNamed 對象訪問有名字的參數。③ 使用 WshUnnamed 對象訪問沒有名字的參數。1、訪問WshNamed對象該對象的訪問是通過創建 WScript.Named 對象的實例實現的。Set argsNamed = WScript.Arguments.Named2、WshNamed對象的屬性WshNamed 對象具有兩個屬性:● Item● Length1.ItemItem 屬性提供了對 WshNamed 對象中的項目的訪問。Object.Item(key)
- object:WshNamed 對象。
- key:想要獲取的項目名稱。
Item 屬性返回一個字符串。對于集合來說,它根據給定的關鍵字返回一個項目。在命令行中輸入參數時,可以在字符串中使用空格,只要將其包含在引號中即可。下面這行代碼可以用于在命令提示符下運行腳本:sample.vbs /a:arg1 /b:arg2如果腳本中包含下面的代碼。
WScript.Echo WScript.Arguments.Named.Item("b")WScript.Echo WScript.Arguments.Named.Item("a")
就會產生這樣的輸出結果。arg2arg12.LengthLength 屬性是一個只讀的整數,可以在編寫 Jscript 腳本時使用。3、WshNamed對象的方法WshNamed 對象具有兩個方法:● Count● Exists1.CountCount 方法返回 WshNamed 或 WshUnnamed 對象的選項開關個數。object.Count
Count 方法用于返回一個整數值。該方法是給 VBScript 用戶使用的,JScript 用戶應該使用 length 屬性。
For x = 0 to WScript.Arguments.Count-1WScript.Echo WScript.Arguments.Named(x)Next x
2.ExistsExists 方法可以用于確定某一給定的鍵值是否存在于 WshNamed 對象中。object.Exists(key)
- object:WshNamed 對象。
- key:字符串值,表示 WshNamed 對象的一個參數。
這個方法返回一個 Boolean 值。如果請求的參數的確在命令行中被指定,就返回 True(否則返回 False)。在命令提示符中輸入下面的代碼運行腳本:sample.vbs /a:arg1 /b:arg2下面的代碼可以用于確定是否使用了參數/a、/b 和/c:
WScript.Echo WScript.Arguments.Named.Exists("a")WScript.Echo WScript.Arguments.Named.Exists("b")WScript.Echo WScript.Arguments.Named.Exists("c")
WshUnnamed對象
WshUnnamed 對象提供了從命令行中對未命名對象的訪問。它是一個由 WshAruments對象的 Unnamed 屬性返回的只讀集合。從該集合中獲取單個參數值時,使用由 0 開始的索引。訪問命令行參數集合有下列三種方法:① 使用 WshAruments 對象訪問整個參數集合。② 使用 WshNamed 對象訪問有名字的參數。③ 使用 WshUnnamed 對象訪問沒有名字的參數。1、訪問WshUnnamed對象該對象的訪問是通過創建 WScript.Arguments.Unnamed 對象的實例實現的。Set argsUnnamed = WScript.Arguments.Unnamed2、WshUnnamed對象的屬性WshUnnamed 對象具有兩個屬性:● Item● Length這兩個屬性和 WshNamed 的類似,這里就不再重復介紹。3、WshUnnamed對象的方法WshUnnamed 對象具有一個方法:● Count這個方法和 WshNamed 的類似,這里就不再重復介紹。
WshNetwork對象
WshNetwork 對象提供對計算機所連接的網絡上共享資源的訪問。如果想連接到網絡共享或網絡打印機,從網絡共享或網絡打印機斷開連接,映射或刪除網絡共享,或訪問網絡上某一用戶的信息,都需要創建一個 WshNetwork 對象。1、訪問WshNetwork對象該對象的訪問是通過創建 WScript.Network 對象的實例實現的。Set WshNetwork = WScript.CreateObject("WScript.Network")2、WshNetwork對象的屬性WshNetwork 對象具有三個屬性:● ComputerName● UserDomain● UserName1.ComputerNameComputerName 屬性返回計算機系統的名稱。object.ComputerName
ComputerName 屬性包含一個字符串值,表示計算機系統的名稱。2.UserDomainUserDomain 屬性返回用戶的域名。object.UserDomain
3.UserNameUserName 屬性返回某個用戶的名稱。object.UserName
UserName 屬性以字符串返回一個用戶的名稱。
Set WshNetwork = CreateObject("WScript.Network")WScript.Echo WshNetwork.ComputerNameWScript.Echo WshNetwork.UserDomainWScript.Echo WshNetwork.UserName
3、WshNetwork對象的方法WshNetwork 對象有下列 8 個方法可用:● AddWindowsPrinterConnection● AddPrinterConnection● EnumPrinterConnection● RemovePrinterConnection● SetDefaultPrinter● EnumNetworkDrives● MapNetworkDrive● RemoveNetworkDrive1.AddWindowsPrinterConnectionAddWindowsPrinterConnection 方法在計算機系統中添加一個 Windows 打印機連接。2.AddPrinterConnectionAddPrinterConnection 方法在計算機系統中添加一個遠程打印機連接。3.EnumPrinterConnectionEnumPrinterConnection 方法返回當前網絡打印機的映射信息。4.RemovePrinterConnectionRemovePrinterConnection 方法在計算機系統中刪除一個共享的網絡打印機連接。5.SetDefaultPrinterSetDefaultPrinter 方法將某個遠程打印機指定為默認打印機。6.MapNetworkDriveMapNetworkDrive 方法在計算機系統中添加一個共享網絡驅動器。7.EnumNetworkDrivesEnumNetworkDrives 方法返回當前網絡驅動器的映射信息。8.RemoveNetworkDriveRemoveNetworkDrive 方法在計算機系統中刪除一個共享的網絡驅動器。
WshEnvironment對象
WshEnvironment 對象提供對 Windows 環境變量集合的訪問。這個對象是一個由 WshShell 對象的 Environment 屬性返回的環境變量集合。該集合包含全部的環境變量(包括有名稱的和沒有名稱的)。要獲取集合中某個具體的環境變量(及其值),可以使用環境變量名作為索引。1、訪問WshEnvironment對象該對象的訪問是通過創建 WScript.Environment 對象的實例實現的。下面的腳本返回運行腳本的系統中安裝的處理器個數:
Set WshShell = WScript.CreateObject("WScript.Shell")Set WshSysEnv = WshShell.Environment("SYSTEM")WScript.Echo WshSysEnv("NUMBER_OF_PROCESSORS")
2、WshEnvironment對象的屬性WshEnvironment 對象具有兩個屬性:● Item● Length1.ItemItem 屬性公開集合中的某一指定元素。Object.Item(natIndex)
- object:EnumNetworkDrive 或 numPrinterConnections 方法的返回值,或由 Environment 或 SpecialFolders 屬性返回的對象。
- natIndex:設置要獲取的元素。
Item 是每個集合的默認屬性。對于 EnumNetworkDrive 和 EnumPrinterConnections 集合來說,索引是一個整數,但對于 Environment 和 SpecialFolders 來說,索引是一個字符串。在 VBScript 中,如果請求的文件夾(strFolderName)不存在,WshShell.SpecialFolders.Item (strFolderName)將返回“Empty”。2.LengthLength 屬性是一個只讀的整數,可以在編寫 Jscript 腳本時使用。2、WshEnvironment對象的方法WshEnvironment 對象具有兩個方法:● Count● Remove1.CountCount 方法返回一個 Long 值,表示集合中元素的個數。object.Count
Count 方法返回一個整數值。該方法是給 VBScript 用戶使用的,JScript 用戶應該使用 Length 屬性。2.RemoveRemove 方法刪除一個現有的環境變量。object.Remove(strName)
- object:WshEnvironment 對象。
strName:一個字符串值,表示要刪除的環境變量的名稱。Remove 方法刪除下列類型的環境變量:① PROCESS② USER③ SYSTEM④ VOLATILE使用 Remove 方法刪除的環境變量將在當前會話結束后被恢復。
Dim?WshShell,?WshEnvSet?WshShell?=?WScript.CreateObject("WScript.Shell")Set?WshEnv?=?WshShell.Environment("PROCESS")WshEnv("tVar")?=?"VBScript?is?Cool!"WScript.Echo?WshShell.ExpandEnvironmentStrings("The?value?of?the?test?variable?is:%tVar%")WshEnv.Remove?"tVar"WScript.Echo?WshShell.ExpandEnvironmentStrings("The?value?of?the?test?variable?is:%tVar%")
WshSpecialFolders對象
WshSpecialFolders 對象提供對 Windows 特殊文件夾集合的訪問。WshShell 對象的 SpecialFolder 屬性返回 WshSpecialFolders 對象。該集合包含對 Windows 特殊文件夾(例如,Desktop 文件夾和 Start menu 文件夾)的引用。從這個集合中可以使用某特殊文件夾的名稱作為索引獲取該文件夾的路徑。一個特殊文件夾的路徑依賴于用戶環境。如果一臺計算機上有多個用戶,那么硬盤上就存有若干組特殊文件夾。下面列出了可用的特殊文件夾:● AllUsersDesktop● AllUsersPrograms● AllUsersStartMenu● AllUsersStartup● Desktop● Favorites● Fonts● MyDocuments● NetHood● PrintHood● Programs● Recent● SendTo● StartMenu● Startup● Templates1、WshSpecialFolders 對象的屬性:Item2、WshSpecialFolders 對象的方法:Count
WshShortcut對象
WshShortcut 對象允許您使用腳本創建快捷方式。1、WshShortcut對象的屬性WshShortcut 對象具有 8 個屬性:● Arguments● Description● FullName● Hotkey● IconLocation● TargetPath● WindowStyle● WorkingDirectory1.ArgumentsArguments 屬性包含 WshArguments 對象(一個參數集合)。從該集合中獲取單個參數值時,使用由 0 開始的索引。2.DescriptionDescription 屬性返回快捷方式的描述信息。object.Description1
Description 屬性包含一個描述快捷方式的字符串值。3.FullNameFullName 屬性返回快捷方式對象目標的有效完整路徑。object.FullName
FullName 屬性包含一個只讀字符串,給出了快捷方式目標的有效完整路徑。4.HotKeyHetKey 屬性用于給快捷方式指定一個熱鍵,或識別快捷方式的熱鍵。一個快捷方式的熱鍵是指一些按鍵的組合,當同時按下這些按鍵時,就會啟動該快捷方式。object.Hotkey = strHotkey
- Object:WshShortcut 對象。
- strHotkey:一個字符串,表示指定給快捷方式的熱鍵。
- 下面是 strHotkey 的語法:
- [KeyModifier]KeyName
- KeyModifier:KeyModifier 可以是這些鍵之一:Alt+、Ctrl+、Shift+、Ext+。Ext+指的是“擴展鍵”。這個鍵的加入是為了將來可能會在字符集中加入一類新的 Shift 鍵。KeyName- a ... z, 0 ... 9, F1 ... F12, ...
- KeyName 是大小寫不敏感的。
5.IconLocationIconLocation 屬性用于給快捷方式指定一個圖標,或識別快捷方式的圖標。object.IconLocation = strIconLocation
- Object:WshShortcut 對象。
- strIconLocation:一個字符串,指定要使用的圖標。該字符串應該包含圖標的一個有效的完整路徑,以及該圖標所關聯的一個索引。如果有多個圖標,可以使用索引選擇其中的一個。索引起始于 0。
6.TargetPathTargetPath 屬性給出了快捷方式執行文件的路徑。object.TargetPath
- Object:WshShortcut 或 WshUrlShortcut 對象。
這個屬性只用于快捷方式的目標路徑,其他所有的參數必須放在 Argument 的屬性中。7.WindowsStyleWindowstyle 屬性用于指定快捷方式的窗口類型,或識別快捷方式所使用的窗口類型。object.WindowStyle = intWindowStyle
- Object:WshShortcut 對象。
- intWindowStyle:設置程序執行窗口的類型。
WindowStyle 屬性返回一個整數。intWindowStyle 的可用值:
intWindowStyle | 描 述 |
1 | 激活并顯示一個窗口如果該窗口處于最小化或最大化狀態,系統將恢復其原始尺寸如果是初次顯示該窗口,應用程序就應該指定這個標志 |
2 | 激活并以最大化狀態顯示窗口 |
3 | 以最小化形式顯示窗口活躍的窗口將繼續保持活躍 |
8.WorkingDirectoryWorkingDirectory 屬性用于指定快捷方式的工作目錄,或識別快捷方式所使用的工作目錄。object.WorkingDirectory = strWorkingDirectory
- Object:WshShortcut 對象。
- strWorkingDirectory:一個字符串,表示快捷方式的起始目錄。
2、WshShortcut對象的方法WshShortcut 對象具有一個方法:● SaveSave 方法將一個快捷方式保存到磁盤。object.Save
- Object:WshShortcut 或 WshUrlShortcut 對象。
使用 CreateShortcut 方法創建一個快捷方式并設置該快捷方式對象的屬性后,可以使用Save 方法將該快捷方式對象保存到硬盤上。Save 方法使用快捷方式對象的 FullName 屬性中的信息確定在硬盤上保存快捷方式對象的位置。只能對系統對象創建快捷方式—— 文件、目錄和磁盤驅動器。不能為打印機或調度任務創建快捷方式。
set?WshShell?=?WScript.CreateObject("WScript.Shell")strDesktop?=?WshShell.SpecialFolders("Desktop")set?oShellLink?=?WshShell.CreateShortcut(strDesktop?&?"\ShortcutScript.lnk")oShellLink.TargetPath?=?WScript.ScriptFullNameoShellLink.WindowStyle?=?1oShellLink.Hotkey?=?"CTRL+SHIFT+N"oShellLink.IconLocation?=?"notepad.exe,?0"oShellLink.Description?=?"Shortcut?script"oShellLink.WorkingDirectory?=?strDesktopoShellLink.SaveWScript.Echo?oShellLink.FullName
WshUrlShortcut對象
WshUrlShortcut 對象允許您使用腳本創建到 Internet 資源的快捷方式。該對象是 WshShell 對象的子對象。必須使用 WshShell 方法的 CreateShortcut 來創建 WshUrlShortcut 對象。下面的代碼可以保存為一個后綴名為.wsf 的 Windows 腳本文件。
<package><job ><script language="VBScript">set WshShell = WScript.CreateObject("WScript.Shell")strDesktop = WshShell.SpecialFolders("Desktop")set oUrlLink = WshShell.CreateShortcut(strDesktop & "\百度.url")oUrlLink.TargetPath = "http://www.baidu.com"oUrlLink.SaveWScript.Echo oUrlLink.FullName</script></job></package>
1、WshUrlShortcut對象的屬性WshUrlShortcut 對象具有兩個屬性:● FullName● TargetPath1.FullNameFullName 屬性返回快捷方式對象目標的有效完整路徑。object.FullName
- Object:WshUrlShortcut 對象。
FullName 屬性包含一個只讀的字符串,給出快捷方式目標的有效的完整路徑。2.TargetPathTargetPath 屬性給出了快捷方式可執行文件的路徑。object.TargetPath
- Object:WshUrlShortcut 對象。
這個屬性只用于快捷方式的目標路徑,其他所有的參數必須放在 Argument 的屬性中。2、WshUrlShortcut對象的方法WshUrlShortcut 對象具有一個方法:● SaveSave 方法將快捷方式對象保存到磁盤。object.Save
- Object:WshUrlShortcut 對象。
使用 CreateShortcut 方法創建一個快捷方式并設置該快捷方式對象的屬性后,可以使用Save 方法將該快捷方式對象保存的硬盤上。Save 方法使用快捷方式對象的 FullName 屬性中的信息確定在硬盤上保存快捷方式對象的位置。