WshShell 對(duì)象詳解
WshShell 對(duì)象
ProgID Wscript.Shell
文件名 WSHom.Ocx
CLSID F935DC22-1CF0-11d0-ADB9-00C04FD58A0B
IID F935DC21-1CF0-11d0-ADB9-00C04FD58A0B
下表說明和 WshShell 對(duì)象有關(guān)的屬性。
屬性 說明
Environment 返回 WshEnvironment 集合對(duì)象。
SpecialFolders 使用 WshSpecialFolders 對(duì)象提供對(duì) Windows shell 文件夾的訪問,如桌面文件夾,開始菜單文件夾和個(gè)人文檔文件夾。
下表說明和 WshShell 對(duì)象有關(guān)的方法。
方法 說明
CreateShortcut 創(chuàng)建并返回 WshShortcut 對(duì)象。
ExpandEnvironmentStrings 擴(kuò)展 PROCESS 環(huán)境變量并返回結(jié)果字符串。
Popup 顯示包含指定消息的消息窗口。
RegDelete 從注冊(cè)表中刪除指定的鍵或值。
RegRead 從注冊(cè)表中返回指定的鍵或值。
RegWrite 在注冊(cè)表中設(shè)置指定的鍵或值。
Run 創(chuàng)建新的進(jìn)程,該進(jìn)程用指定的窗口樣式執(zhí)行指定的命令。
WshShell.Environment
Environment 屬性返回 WshEnvironment 對(duì)象。
語法
WshShell.Environment ( [strType]) = objWshEnvironment
注釋
若 strType 指定了環(huán)境變量所處的位置,可能值為 "System"、"User"、"Volatile" 和 "Process"。若未提供 strType,則該方法在 Windows NT 中檢索系統(tǒng)環(huán)境變量或在 Windows 95 中檢索進(jìn)程環(huán)境變量。
對(duì)于 Windows 95,strType 參數(shù)僅支持 "Process"。
下列變量是由 Windows 操作系統(tǒng)提供的。腳本也可獲取由其他應(yīng)用程序設(shè)置的環(huán)境變量。
名稱 說明
NUMBER_OF_PROCESSORS 計(jì)算機(jī)上運(yùn)行的處理器數(shù)目。
PROCESSOR_ARCHITECTURE 用戶工作站使用的處理器類型。
PROCESSOR_IDENTIFIER 用戶工作站的處理器 ID。
PROCESSOR_LEVEL 用戶工作站的處理器級(jí)。
PROCESSOR_REVISION 用戶工作站的處理器版本。
OS 用戶工作站所用的操作系統(tǒng)。
COMSPEC 用于運(yùn)行“命令提示”窗口的命令(通常為 cmd.exe)。
HOMEDRIVE 本地主驅(qū)動(dòng)器(通常為 C 驅(qū)動(dòng)器)。
HOMEPATH 用戶的默認(rèn)路徑(在 Windows NT 上通常為 \users\default)。
PATH 路徑環(huán)境變量。
PATHEXT 可執(zhí)行文件的擴(kuò)展名(通常為 .com、 .exe、.bat 或 .cmd)。
PROMPT 命令提示符(通常為 $P$G)。
SYSTEMDRIVE 系統(tǒng)所在的本地驅(qū)動(dòng)器(例如,c:\)。
SYSTEMROOT 系統(tǒng)目錄(例如,c:\winnt)。和 WINDIR 相同。
WINDIR 系統(tǒng)目錄(例如 c:\winnt)。和 SYSTEMROOT 相同。
TEMP 存儲(chǔ)臨時(shí)文件的目錄(例如,c:\temp)。用戶可更改。
TMP 存儲(chǔ)臨時(shí)文件的目錄(例如,c:\temp)。用戶可更改。
示例
‘ Retrieve the NUMBER_OF_PROCESSORS system environment variable
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set WshSysEnv = WshShell.Environment("SYSTEM")
Wscript.Echo WshSysEnv("NUMBER_OF_PROCESSORS")
請(qǐng)參閱
WshEnvironment 對(duì)象
WshEnvironment 對(duì)象
WshEnvironment 對(duì)象未直接給出,可用 WshShell.Environment 屬性來訪問。
ProgID N/A
文件名 WSHom.Ocx
CLSID
IID
下表描述與 WshEnvironment 對(duì)象關(guān)聯(lián)的屬性。
屬性 說明
Item 獲取或設(shè)置指定的環(huán)境變量值。
Count 枚舉項(xiàng)的數(shù)目。
length 枚舉項(xiàng)的數(shù)目 (JScript)。
下表描述與 WshEnvironment 對(duì)象關(guān)聯(lián)的方法。
方法 說明
Remove 刪除指定的環(huán)境變量。
WshShell.SpecialFolders
SpecialFolders 屬性提供 WshSpecialFolders 對(duì)象以便訪問 Windows 的 shell 文件夾,例如桌面文件夾、開始菜單文件夾和個(gè)人文檔文件夾。
語法
WshShell.SpecialFolders = objWshSpecialFolders
示例
‘ This code fragment shows how to access the desktop folder
Set WshShell = Wscript.CreateObject("Wscript.Shell")
MsgBox "Your desktop is " & WshShell.SpecialFolders("Desktop")
請(qǐng)參閱
WshSpecialFolders 對(duì)象
WshSpecialFolders 對(duì)象
該對(duì)象未直接給出。要得到 WshSpecialFolders 對(duì)象,請(qǐng)使用 WshShell.SpecialFolders 屬性。
ProgID N/A
文件名 WSHom.Ocx
CLSID
IID
下表描述與 WshSpecialFolders 對(duì)象關(guān)聯(lián)的屬性。
屬性 描述
Item 指定文件夾的完整路徑(默認(rèn))。
Count 枚舉項(xiàng)的數(shù)目。
length 枚舉項(xiàng)的數(shù)目 (JScript) 。
WshSpecialFolders.Item
Item 屬性返回由 strFolderName 指定的文件夾的完整路徑。它是默認(rèn)屬性。
語法
WshShell.SpecialFolders.Item("strFolderName") = strFolderPath
WshShell.SpecialFolders("strFolderName") = strFolderPath
注釋
若請(qǐng)求的文件夾 (strFolderName) 不可用,則 WshShell.SpecialFolders("strFolderName") 返回 NULL。例如,Windows 95 沒有 AllUsersDesktop 文件夾,如果 strFolderName = AllUsersDesktop,則返回 NULL。
Windows 95 和 Windows NT 4.0 操作系統(tǒng)提供下列指定文件夾:
AllUsersDesktop
AllUsersStartMenu
AllUsersPrograms
AllUsersStartup
Desktop
Favorites
Fonts
MyDocuments
NetHood
PrintHood
Programs
Recent
SendTo
StartMenu
Startup
Templates
示例
‘ This fragment returns the full path for the Windows Desktop folder
Set WshShell = Wscript.CreateObject("Wscript.Shell")
StrMyDesktop = WshShell.SpecialFolders("Desktop")
‘ List all special folders
For Each strFolder In WshShell.SpecialFolders
MsgBox strFolder
Next
請(qǐng)參閱
WshShell.SpecialFolders 屬性
WshShell.CreateShortcut
CreateShortcut 方法創(chuàng)建 WshShortcut 對(duì)象并將其返回。如果快捷方式標(biāo)題以 .url 結(jié)尾,就會(huì)創(chuàng)建 WshURLShortcut 對(duì)象。
語法
WshShell.CreateShortcut(strPathname) = objShortcut
示例
‘ This code fragment creates a shortcut
‘ to the currently executing script
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set oShellLink = WshShell.CreateShortcut("Current Script.lnk")
oShellLink.TargetPath = Wscript.ScriptFullName
oShellLink.Save
Set oUrlLink = WshShell.CreateShortcut("Microsoft Web Site.URL")
oUrlLink.TargetPath = "http://www.microsoft.com"
oUrlLink.Save
請(qǐng)參閱
WshShortcut 對(duì)象、WshUrlShortcut 對(duì)象
WshShortcut 對(duì)象
該對(duì)象未直接給出。要獲得 WshShortcut 對(duì)象,請(qǐng)使用 WshShell.CreateShortcut 方法。
ProgID N/A
文件名 WSHom.Ocx
CLSID F935DC28-1CF0-11d0-ADB9-00C04FD58A0B
IID F935DC27-1CF0-11d0-ADB9-00C04FD58A0B
下表說明和 WshShortcut 對(duì)象有關(guān)的屬性。
屬性 說明
Arguments 快捷方式對(duì)象的參數(shù)。
Description 快捷方式對(duì)象的說明。
Hotkey 快捷方式對(duì)象的熱鍵。
IconLocation 快捷方式對(duì)象的圖標(biāo)位置。
TargetPath 快捷方式對(duì)象的目標(biāo)路徑。
WindowStyle 快捷方式對(duì)象的窗口樣式。
WorkingDirectory 快捷方式對(duì)象的工作目錄。
下表說明與 WshShortcut 對(duì)象有關(guān)的方法。
方法 說明
Save 將快捷方式存儲(chǔ)到指定的文件系統(tǒng)中。
WshShortcut.Arguments
Arguments 屬性提供快捷方式對(duì)象的參數(shù)。
語法
WshShortcut.Arguments = strArguments
WshShortcut.Description
Description 屬性提供快捷方式對(duì)象的說明。
語法
WshShortcut.Description = strDescription
WshShortcut.Hotkey
HotKey 屬性提供快捷方式對(duì)象的熱鍵。熱鍵是啟動(dòng)或切換程序的鍵盤快捷方式。
語法
WshShortcut.HotKey = strHotKey
注釋
strHotKey 的BNF語法如下:
Hotkey ::= modifier* keyname
modifier ::= "ALT+" | "CTRL+" | "SHIFT+" | "EXT+"
keyname ::= "A" .. "Z" |
"0".. "9" |
"Back" | "Tab" | "Clear" | "Return" |
"Escape" | "Space" | "Prior" | ...
所有鍵的名稱都可以在 WINUSER.H 中找到。熱鍵不區(qū)分大小寫。
熱鍵只能激活位于 Windows 桌面或 Windows“開始”菜單的快捷方式。
Windows 資源管理器不接受 ESC、ENTER、TAB、SPACE、PRINT SCREEN 或 BACKSPACE,即使 WshShortcut.Hotkey 遵循 Win32 API 支持它們。因此,建議在快捷方式中不要用這些鍵。
示例
Set WshShell = Wscript.CreateObject("Wscript.WshShell")
strDesktop = WshShell.SpecialFolders("Desktop")
Set oMyShortcut = WshShell.CreateShortcut(strDesktop & "\a_key.lnk")
OMyShortcut.TargetPath = "%windir%\notepad.exe"
oMyShortCut.Hotkey = "ALT+CTRL+F"
oMyShortCut.Save
Wscript.Echo oMyShortCut.HotKey = "Alt+Ctrl+F"
請(qǐng)參閱
WshSpecialFolders 對(duì)象
WshShortcut.IconLocation
IconLocation 屬性提供快捷方式對(duì)象的圖標(biāo)位置。圖標(biāo)位置的格式應(yīng)為 "Path,index"。
語法
WshShortcut.IconLocation = strIconLocation
WshShortcut.TargetPath
TargetPath 屬性提供快捷方式對(duì)象的目標(biāo)路徑。
語法
WshShortcut.TargetPath = strTargetPath
WshShortcut.WindowStyle
WindowStyle 屬性提供快捷方式對(duì)象的窗口樣式。
語法
WshShortcut.WindowStyle = natWindowStyle
WshShortcut.WorkingDirectory
WorkingDirectory 為一個(gè)快捷方式對(duì)象提供工作目錄。
語法
WshShortcut.WorkingDirectory = strWorkingDirectory
WshShortcut.Save
Save 方法把快捷方式對(duì)象保存到由 FullName 屬性指定的位置。
語法
WshShortcut.Save
WshUrlShortcut 對(duì)象
該對(duì)象未直接給出。要獲取 WshUrlShortcut 對(duì)象,可使用 WshShell.CreateShortcut 方法。
ProgID N/A
文件名 WSHom.Ocx
CLSID
IID
下表說明了和 WshUrlShortcut 對(duì)象有關(guān)的屬性。
屬性 說明
FullName URL 快捷方式對(duì)象的完整路徑。
TargetPath URL 快捷方式對(duì)象的目標(biāo)路徑。
下表說明了和 WshUrlShortcut 對(duì)象有關(guān)的方法。
方法 說明
Save 將快捷方式保存到指定的文件系統(tǒng)中。
WshUrlShortcut.FullName
FullName 屬性提供快捷方式對(duì)象的完整路徑。
語法
WshUrlShortcut.FullName = strFullName
WshUrlShortcut.TargetPath
TargetPath 屬性提供快捷方式對(duì)象的目標(biāo)路徑。
語法
WshUrlShortcut.TargetPath = strTargetPath
WshUrlShortcut.Save
Save 方法保存一個(gè)快捷方式,該快捷方式指向 FullName 屬性指定的位置。
語法
WshUrlShortcut.Save
WshShell.ExpandEnvironmentStrings
ExpandEnvironmentStrings 方法在 strString 中擴(kuò)展 PROCESS 環(huán)境變量并返回結(jié)果字符串。變量被 ‘%‘ 字符括起。
環(huán)境變量不區(qū)分大小寫。
語法
WshShell.ExpandEnvironmentStrings(strString) = strExpandedString
示例
MsgBox "Prompt is " & WshShell.ExpandEnviromentStrings("%PROMPT%")
WshShell.Popup
Popup 方法顯示一個(gè)彈出式消息框窗口,消息框中包含的消息由 strText 指定。該消息框的窗口標(biāo)題由 strTitle 指定。若 strTitle 省略,則窗口標(biāo)題為 Windows Scripting Host。
語法
WshShell.Popup(strText, [natSecondsToWait], [strTitle], [natType]) = intButton
注釋
若提供 natSecondsToWait 且其值大于零,則消息框在 natSecondsToWait 秒后關(guān)閉。
natType 的含義與其在 Win32? MessageBox 函數(shù)中相同。下表顯示 natType 中的值及含義。下表中的值可以組合。
按鈕類型
值 說明
0 顯示“確定”按鈕
1 顯示“確定”和“取消”按鈕
2 顯示“終止”、“重試”和“忽略”按鈕
3 顯示“是”、“否”和“取消”按鈕
4 顯示“是”和“否”按鈕
5 顯示“重試”和“取消”按鈕
圖標(biāo)類型
值 說明
16 顯示停止標(biāo)記圖標(biāo)
32 顯示問號(hào)圖標(biāo)
48 顯示感嘆號(hào)圖標(biāo)
64 顯示信息標(biāo)記圖標(biāo)
以上兩個(gè)表并不涵蓋 natType 的所有值。完整的列表請(qǐng)參閱 Win32 文檔。
返回值 intButton 指示用戶所單擊的按扭編號(hào)。若用戶在 natSecondsToWait 秒之前不單擊按扭,則 intButton 設(shè)置為 -1 。
值 說明
1 “確定”按扭
2 “取消”按扭
3 “終止”按扭
4 “重試”按扭
5 “忽略”按扭
6 “是”按扭
7 “否”按扭
示例
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Popup "Where do you want to go today?"
請(qǐng)參閱
Wscript.Echo 方法
Wscript.Echo
Echo 方法在窗口(Wscript.exe 中)或“命令提示符”窗口(Cscript.exe 中)顯示參數(shù)。
參數(shù)用空格分隔。在 Cscript.exe 中,該方法在顯示最后一個(gè)參數(shù)之后輸出一對(duì)回車/換行(CR LF)。
語法
Wscript.Echo [anyArg...]
示例
Wscript.Echo
Wscript.Echo 1, 2, 3
Wscript.Echo "Windows Scripting Host is cool."
WshShell.RegDelete
RegDelete 從注冊(cè)表中刪除名為 strName 的鍵或值。
語法
WshShell.RegDelete strName
參數(shù)
strName
如果 strName 以反斜杠 (\) 結(jié)束,則該方法刪除鍵而不是值。
strName 參數(shù)必須以下列之一的根鍵名開始:
短根鍵名 長(zhǎng)根鍵名
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HKCR HKEY_CLASSES_ROOT
HKEY_USERS
HKEY_CURRENT_CONFIG
示例
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.RegDelete "HKCU\ScriptEngine\Value" ‘ Delete value "Value"
WshShell.RegDelete "HKCU\ScriptEngine\Key\" ‘ Delete key "Key"
請(qǐng)參閱
WshShell.RegRead 方法、WshShell.RegWrite 方法
WshShell.RegRead
RegRead 方法返回名為 strName 的注冊(cè)表鍵或值。
語法
WshShell.RegRead(strName) = strValue
參數(shù)
strName
如果 strName 以反斜杠 (\) 結(jié)束,則該方法返回鍵,而不是值。
strName 參數(shù)必須以下列根鍵名開始。
Short Long
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HKCR HKEY_CLASSES_ROOT
HKEY_USERS
HKEY_CURRENT_CONFIG
注釋
RegRead 方法僅支持 REG_SZ、REG_EXPAND_SZ、REG_Dword、REG_BINARY 和 REG_MULTI_SZ 數(shù)據(jù)類型。若注冊(cè)表有其他數(shù)據(jù)類型,RegRead 返回 DISP_E_TYPEMISMATCH。
示例
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.RegRead("HKCU\ScriptEngine\Val") ‘ Read from value "Val"
WshShell.RegRead("HKCU\ScriptEngine\Key\") ‘ Read from key "Key"
請(qǐng)參閱
WshShell.RegDelete 方法、WshShell.RegWrite 方法
WshShell.RegWrite
RegWrite 方法設(shè)置名為 strName 的注冊(cè)表鍵或值。
語法
WshShell.RegWrite strName, anyValue, [strType]
參數(shù)
strName
若 strName 以一個(gè)反斜杠 (\) 結(jié)束,則該方法設(shè)置鍵,而不是值。
strName 參數(shù)必須以下列根鍵名開頭。
Short Long
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HKCR HKEY_CLASSES_ROOT
HKEY_USERS
HKEY_CURRENT_CONFIG
anyValue
當(dāng) strType 為 REG_SZ 或 REG_EXPAND_SZ 時(shí),RegWrite 方法自動(dòng)將 anyValue 轉(zhuǎn)換為字符串。若 strType 為 REG_Dword,則 anyValue 被轉(zhuǎn)換為整數(shù)。若 strType 為 REG_BINARY,則 anyValue 必須是一個(gè)整數(shù)。
strType
RegWrite 方法支持 strType 為 REG_SZ、REG_EXPAND_SZ、REG_Dword 和 REG_BINARY。若其他的數(shù)據(jù)類型被作為 strType 傳遞,RegWrite 返回 E_INVALIDARG。
示例
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.RegWrite "HKCU\ScriptEngine\Value", "Some string value"
WshShell.RegWrite "HKCU\ScriptEngine\Key\", 1 "REG_Dword"
請(qǐng)參閱
WshShell.RegDelete 方法、WshShell.RegWrite方法
WshShell.Run
Run 方法創(chuàng)建一個(gè)新的進(jìn)程,該進(jìn)程以 intWindowStyle 窗口樣式執(zhí)行 strCommand。
語法
WshShell.Run (strCommand, [intWindowStyle], [blnWaitOnReturn])
參數(shù)
strCommand
在 strCommand 參數(shù)內(nèi)部的環(huán)境變量被自動(dòng)擴(kuò)展。
intWindowStyle
這是為新進(jìn)程在 STARTUPINFO 結(jié)構(gòu)內(nèi)設(shè)置的 wShowWindow 元素的值。其意義與 ShowWindow 中的 nCmdShow 參數(shù)相同,可取以下值之一。名稱 值 含義
SW_HIDE
0 隱藏窗口并激活另一窗口。
SW_MINIMIZE
6 最小化指定窗口并激活按 Z 序排序的下一個(gè)頂層窗口。
SW_RESTORE
9 激活并顯示窗口。若窗口是最小化或最大化,則恢復(fù)到原來的大小和位置。在還原應(yīng)用程序的最小化窗口時(shí),應(yīng)指定該標(biāo)志。
SW_SHOW
5 以當(dāng)前大小和位置激活并顯示窗口。
SW_SHOWMAXIMIZED
3 激活窗口并以最大化顯示該窗口。
SW_SHOWMINIMIZED
2 激活窗口并以最小化顯示該窗口。
SW_SHOWMINNOACTIVE
7 最小化顯示窗口。活動(dòng)窗口保持活動(dòng)。
SW_SHOWNA
8 以當(dāng)前狀態(tài)顯示窗口?;顒?dòng)窗口保持活動(dòng)。
SW_SHOWNOACTIVATE
4 按窗口最近的大小和位置顯示。活動(dòng)窗口保持活動(dòng)。
SW_SHOWNORMAL
1 激活并顯示一個(gè)窗口。若窗口是最小化或最大化,則恢復(fù)到其原來的大小和位置。
blnWaitOnReturn
如果未指定 blnWaitOnReturn 或其值為 FALSE,則該方法立即返回到腳本繼續(xù)執(zhí)行而不等待進(jìn)程結(jié)束。
若 blnWaitOnReturn 設(shè)為 TRUE,則 Run 方法返回由應(yīng)用程序返回的任何錯(cuò)誤代碼。如果未指定 blnWaitOnReturn 或其值為 FALSE,則 Run 返回錯(cuò)誤代碼 0(zero)。
示例
‘ This fragment launches Notepad with the current executed script
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Run ("notepad " & Wscript.ScriptFullName)
WshShell.Run ("%windir%\notepad" & Wscript.ScriptFullName)
‘ This fragment returns the error code from the executed application
Return = WshShell.Run("notepad " & Wscript.ScriptFullName, 1, TRUE)