2007年12月14日 星期五

[轉貼]Stream、WshShell、WshUrlShortcut對象及Shell.Application的使用說明

[轉貼]Stream、WshShell、WshUrlShortcut對象及Shell.Application的使用說明

Kafree收集整理
來源:論壇轉載無法確定出處,如有版權問題請與我們聯繫


1.Stream對像

組件:"Adodb.Stream"
有下列方法:
Cancel 方法
   使用方法如下
   Object.Cancel
   說明:取消執行掛起的異步 Execute 或 Open 方法的調用。
Close 方法
   使用方法如下
   Object.Close
   :關閉對像
CopyTo 方法
   使用方法如下
   Object.CopyTo(destStream,[CharNumber])
   說明:將對像的數據複製,destStream指向要複製的對像,CharNumber為可選參數,指要複製的字節數,不選為全部複製。
Flush 方法
   使用方法如下
   Object.Flush
   說明:
LoadFromFile 方法
   使用方法如下
   Object.LoadFromFile(FileName)
   說明:將FileName指定的文件裝入對像中,參數FileName為指定的用戶名。
Open 方法
    使用方法如下
    Object.Open(Source,[Mode],[Options],[UserName],[Password])
    說明:打開對像,
    參數說明:Sourece 對像源,可不指定
Mode 指定打開模式,可不指定,可選參數如下:
   adModeRead =1
   adModeReadWrite =3
   adModeRecursive =4194304
   adModeShareDenyNone =16
   adModeShareDenyRead =4
   adModeShareDenyWrite =8
   adModeShareExclusive =12
   adModeUnknown =0
   adModeWrite =2
Options 指定打開的選項,可不指定,可選參數如下:
   adOpenStreamAsync =1
   adOpenStreamFromRecord =4
   adOpenStreamUnspecified=-1
  UserName 指定用戶名,可不指定。
  Password 指定用戶名的密碼
Read 方法
使用方法如下:
Object.Read(Numbytes)
說明:讀取指定長度的二進制內容。
參數說明:Numbytes指定的要讀取的找度,不指定則讀取全部。

ReadText 方法
使用方法如下:
Object.ReadText(NumChars)
說明:讀取指定長度的文本
參數說明:NumChars指定的要讀取的找度,不指定則讀取全部。

SaveToFile 方法
使用方法如下:
Object.SaveToFile(FileName,[Options])
說明:將對像的內容寫到FileName指定的文件中
參數說明:FileName指定的文件
   Options 存取的選項,可不指定,可選參數如下:
    adSaveCreateNotExist =1
    adSaveCreateOverWrite =2

SetEOS 方法
使用方法如下:
Object.setEOS()
說明:
SkipLine 方法
使用方法如下:
Object.SkipLine()
說明:
Write 方法
使用方法如下:
Object.Write(Buffer)
說明:將指定的數據裝入對像中。
參數說明:Buffer 為指定的要寫入的內容。
WriteText 方法
使用方法如下:
Object.Write(Data,[Options])
說明:將指定的文本數據裝入對像中。
參數說明:Data 為指定的要寫入的內容。
      Options 寫入的選項,可不指定,可選參數如下:
   adWriteChar =0
   adWriteLine =1

 

有下列屬性:
Charset
EOS 返回對像內數據是否為空。

LineSeparator 指定換行格式,可選參數有
  adCR  =13
  adCRLF  =-1
  adLF  =10

Mode 指定或返加模式。

Position 指定或返回對像內數據的當前指針。(新OPEN的:0)

Size 返回對像內數據的大小。

State 返加對像狀態是否打開。

Type 指定或返回的數據類型,可選參數為:
  adTypeBinary =1
  adTypeText =2

2.WshShell和WshUrlShortcut 對像

WshShell 對像
ProgID Wscript.Shell
文件名 WSHom.Ocx
CLSID F935DC22-1CF0-11d0-ADB9-00C04FD58A0B
IID F935DC21-1CF0-11d0-ADB9-00C04FD58A0B

下表說明和 WshShell 對像有關的屬性。

屬性 說明
Environment 返回 WshEnvironment 集合對象。
SpecialFolders 使用 WshSpecialFolders 對像提供對 Windows shell 文件夾的訪問,如桌面文件夾,開始菜單文件夾和個人文檔文件夾。

下表說明和 WshShell 對像有關的方法。

方法 說明
CreateShortcut 創建並返回 WshShortcut 對象。
ExpandEnvironmentStrings 擴展 PROCESS 環境變量並返回結果字符串。
Popup 顯示包含指定消息的消息窗口。
RegDelete 從註冊表中刪除指定的鍵或值。
RegRead 從註冊表中返回指定的鍵或值。
RegWrite 在註冊表中設置指定的鍵或值。
Run 創建新的進程,該進程用指定的窗口樣式執行指定的命令。

WshShell.Environment
Environment 屬性返回 WshEnvironment 對象。

語法
WshShell.Environment ( [strType]) = objWshEnvironment

註釋
若 strType 指定了環境變量所處的位置,可能值為 "System"、"User"、"Volatile" 和 "Process"。若未提供 strType,則該方法在 Windows NT 中檢索系統環境變量或在 Windows 95 中檢索進程環境變量。

對於 Windows 95,strType 參數僅支持 "Process"。

下列變量是由 Windows 操作系統提供的。腳本也可獲取由其他應用程序設置的環境變量。

名稱 說明
NUMBER_OF_PROCESSORS 計算機上運行的處理器數目。
PROCESSOR_ARCHITECTURE 用戶工作站使用的處理器類型。
PROCESSOR_IDENTIFIER 用戶工作站的處理器 ID。
PROCESSOR_LEVEL 用戶工作站的處理器級。
PROCESSOR_REVISION 用戶工作站的處理器版本。
OS 用戶工作站所用的操作系統。
COMSPEC 用於運行「命令提示」窗口的命令(通常為 cmd.exe)。
HOMEDRIVE 本地主驅動器(通常為 C 驅動器)。
HOMEPATH 用戶的默認路徑(在 Windows NT 上通常為 \users\default)。
PATH 路徑環境變量。
PATHEXT 可執行文件的擴展名(通常為 .com、 .exe、.bat 或 .cmd)。
PROMPT 命令提示符(通常為 $P$G)。
SYSTEMDRIVE 系統所在的本地驅動器(例如,c:\)。
SYSTEMROOT 系統目錄(例如,c:\winnt)。和 WINDIR 相同。
WINDIR 系統目錄(例如 c:\winnt)。和 SYSTEMROOT 相同。
TEMP 存儲臨時文件的目錄(例如,c:\temp)。用戶可更改。
TMP 存儲臨時文件的目錄(例如,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")

請參閱
WshEnvironment 對像

WshEnvironment 對像
WshEnvironment 對像未直接給出,可用 WshShell.Environment 屬性來訪問。

ProgID N/A
文件名 WSHom.Ocx
CLSID
IID

下表描述與 WshEnvironment 對像關聯的屬性。

屬性 說明
Item 獲取或設置指定的環境變量值。
Count 枚舉項的數目。
length 枚舉項的數目 (JScript)。

下表描述與 WshEnvironment 對像關聯的方法。

方法 說明
Remove 刪除指定的環境變量。

WshShell.SpecialFolders
SpecialFolders 屬性提供 WshSpecialFolders 對像以便訪問 Windows 的 shell 文件夾,例如桌面文件夾、開始菜單文件夾和個人文檔文件夾。

語法
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")
請參閱
WshSpecialFolders 對像

WshSpecialFolders 對像
該對像未直接給出。要得到 WshSpecialFolders 對象,請使用 WshShell.SpecialFolders 屬性。

ProgID N/A
文件名 WSHom.Ocx
CLSID
IID

下表描述與 WshSpecialFolders 對像關聯的屬性。

屬性 描述
Item 指定文件夾的完整路徑(默認)。
Count 枚舉項的數目。
length 枚舉項的數目 (JScript) 。

WshSpecialFolders.Item
Item 屬性返回由 strFolderName 指定的文件夾的完整路徑。它是默認屬性。

語法
WshShell.SpecialFolders.Item("strFolderName") = strFolderPath
WshShell.SpecialFolders("strFolderName") = strFolderPath

註釋
若請求的文件夾 (strFolderName) 不可用,則 WshShell.SpecialFolders("strFolderName") 返回 NULL。例如,Windows 95 沒有 AllUsersDesktop 文件夾,如果 strFolderName = AllUsersDesktop,則返回 NULL。

Windows 95 和 Windows NT 4.0 操作系統提供下列指定文件夾:
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

請參閱
WshShell.SpecialFolders 屬性

WshShell.CreateShortcut
CreateShortcut 方法創建 WshShortcut 對象並將其返回。如果快捷方式標題以 .url 結尾,就會創建 WshURLShortcut 對象。

語法
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

請參閱
WshShortcut 對像、WshUrlShortcut 對像

WshShortcut 對像
該對像未直接給出。要獲得 WshShortcut 對象,請使用 WshShell.CreateShortcut 方法。

ProgID N/A
文件名 WSHom.Ocx
CLSID F935DC28-1CF0-11d0-ADB9-00C04FD58A0B
IID F935DC27-1CF0-11d0-ADB9-00C04FD58A0B

下表說明和 WshShortcut 對像有關的屬性。

屬性 說明
Arguments 快捷方式對象的參數。
Description 快捷方式對象的說明。
Hotkey 快捷方式對象的熱鍵。
IconLocation 快捷方式對象的圖標位置。
TargetPath 快捷方式對象的目標路徑。
WindowStyle 快捷方式對象的窗口樣式。
WorkingDirectory 快捷方式對象的工作目錄。

下表說明與 WshShortcut 對像有關的方法。

方法 說明
Save 將快捷方式存儲到指定的文件系統中。

WshShortcut.Arguments
Arguments 屬性提供快捷方式對象的參數。

語法
WshShortcut.Arguments = strArguments

WshShortcut.Description
Description 屬性提供快捷方式對象的說明。

語法
WshShortcut.Description = strDescription

WshShortcut.Hotkey
HotKey 屬性提供快捷方式對象的熱鍵。熱鍵是啟動或切換程序的鍵盤快捷方式。

語法
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 中找到。熱鍵不區分大小寫。

熱鍵只能激活位於 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"

請參閱
WshSpecialFolders 對像

WshShortcut.IconLocation
IconLocation 屬性提供快捷方式對象的圖標位置。圖標位置的格式應為 "Path,index"。

語法
WshShortcut.IconLocation = strIconLocation

WshShortcut.TargetPath
TargetPath 屬性提供快捷方式對象的目標路徑。

語法
WshShort

WshUrlShortcut 對像
該對像未直接給出。要獲取 WshUrlShortcut 對象,可使用 WshShell.CreateShortcut 方法。

ProgID N/A
文件名 WSHom.Ocx
CLSID
IID

下表說明了和 WshUrlShortcut 對像有關的屬性。

屬性 說明
FullName URL 快捷方式對象的完整路徑。
TargetPath URL 快捷方式對象的目標路徑。

下表說明了和 WshUrlShortcut 對像有關的方法。

方法 說明
Save 將快捷方式保存到指定的文件系統中。

WshUrlShortcut.FullName
FullName 屬性提供快捷方式對象的完整路徑。

語法
WshUrlShortcut.FullName = strFullName

WshUrlShortcut.TargetPath
TargetPath 屬性提供快捷方式對象的目標路徑。

語法
WshUrlShortcut.TargetPath = strTargetPath

WshUrlShortcut.Save
Save 方法保存一個快捷方式,該快捷方式指向 FullName 屬性指定的位置。

語法
WshUrlShortcut.Save

WshShell.ExpandEnvironmentStrings
ExpandEnvironmentStrings 方法在 strString 中擴展 PROCESS 環境變量並返回結果字符串。變量被 '%' 字符括起。

環境變量不區分大小寫。

語法
WshShell.ExpandEnvironmentStrings(strString) = strExpandedString

示例
MsgBox "Prompt is " & WshShell.ExpandEnviromentStrings("%PROMPT%")

 

WshShell.Popup
Popup 方法顯示一個彈出式消息框窗口,消息框中包含的消息由 strText 指定。該消息框的窗口標題由 strTitle 指定。若 strTitle 省略,則窗口標題為 Windows Scripting Host。

語法
WshShell.Popup(strText, [natSecondsToWait], [strTitle], [natType]) = intButton

註釋
若提供 natSecondsToWait 且其值大於零,則消息框在 natSecondsToWait 秒後關閉。

natType 的含義與其在 Win32? MessageBox 函數中相同。下表顯示 natType 中的值及含義。下表中的值可以組合。

按鈕類型
值 說明
0 顯示「確定」按鈕
1 顯示「確定」和「取消」按鈕
2 顯示「終止」、「重試」和「忽略」按鈕
3 顯示「是」、「否」和「取消」按鈕
4 顯示「是」和「否」按鈕
5 顯示「重試」和「取消」按鈕

圖標類型
值 說明
16 顯示停止標記圖標
32 顯示問號圖標
48 顯示感歎號圖標
64 顯示信息標記圖標

以上兩個表並不涵蓋 natType 的所有值。完整的列表請參閱 Win32 文檔。

返回值 intButton 指示用戶所單擊的按扭編號。若用戶在 natSecondsToWait 秒之前不單擊按扭,則 intButton 設置為 -1 。

值 說明
1 「確定」按扭
2 「取消」按扭
3 「終止」按扭
4 「重試」按扭
5 「忽略」按扭
6 「是」按扭
7 「否」按扭

示例
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Popup "Where do you want to go today?"

請參閱
Wscript.Echo 方法

Wscript.Echo
Echo 方法在窗口(Wscript.exe 中)或「命令提示符」窗口(Cscript.exe 中)顯示參數。

參數用空格分隔。在 Cscript.exe 中,該方法在顯示最後一個參數之後輸出一對回車/換行(CR LF)。

語法
Wscript.Echo [anyArg...]

示例
Wscript.Echo
Wscript.Echo 1, 2, 3
Wscript.Echo "Windows Scripting Host is cool."

WshShell.RegDelete
RegDelete 從註冊表中刪除名為 strName 的鍵或值。

語法
WshShell.RegDelete strName

參數
strName
如果 strName 以反斜槓 (\) 結束,則該方法刪除鍵而不是值。
strName 參數必須以下列之一的根鍵名開始:

短根鍵名 長根鍵名
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"

請參閱
WshShell.RegRead 方法、WshShell.RegWrite 方法

WshShell.RegRead
RegRead 方法返回名為 strName 的註冊表鍵或值。

語法
WshShell.RegRead(strName) = strValue

參數
strName
如果 strName 以反斜槓 (\) 結束,則該方法返回鍵,而不是值。
strName 參數必須以下列根鍵名開始。

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 數據類型。若註冊表有其他數據類型,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"

請參閱
WshShell.RegDelete 方法、WshShell.RegWrite 方法

WshShell.RegWrite
RegWrite 方法設置名為 strName 的註冊表鍵或值。

語法
WshShell.RegWrite strName, anyValue, [strType]

參數
strName
若 strName 以一個反斜槓 (\) 結束,則該方法設置鍵,而不是值。
strName 參數必須以下列根鍵名開頭。

Short Long
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HKCR HKEY_CLASSES_ROOT
HKEY_USERS
HKEY_CURRENT_CONFIG

 

anyValue
當 strType 為 REG_SZ 或 REG_EXPAND_SZ 時,RegWrite 方法自動將 anyValue 轉換為字符串。若 strType 為 REG_DWORD,則 anyValue 被轉換為整數。若 strType 為 REG_BINARY,則 anyValue 必須是一個整數。

strType
RegWrite 方法支持 strType 為 REG_SZ、REG_EXPAND_SZ、REG_DWORD 和 REG_BINARY。若其他的數據類型被作為 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"

請參閱
WshShell.RegDelete 方法、WshShell.RegWrite方法

WshShell.Run
Run 方法創建一個新的進程,該進程以 intWindowStyle 窗口樣式執行 strCommand。

語法
WshShell.Run (strCommand, [intWindowStyle], [blnWaitOnReturn])

參數
strCommand
在 strCommand 參數內部的環境變量被自動擴展。

intWindowStyle
這是為新進程在 STARTUPINFO 結構內設置的 wShowWindow 元素的值。其意義與 ShowWindow 中的 nCmdShow 參數相同,可取以下值之一。名稱 值 含義
SW_HIDE
0 隱藏窗口並激活另一窗口。
SW_MINIMIZE
6 最小化指定窗口並激活按 Z 序排序的下一個頂層窗口。
SW_RESTORE
9 激活並顯示窗口。若窗口是最小化或最大化,則恢復到原來的大小和位置。在還原應用程序的最小化窗口時,應指定該標誌。
SW_SHOW
5 以當前大小和位置激活並顯示窗口。
SW_SHOWMAXIMIZED
3 激活窗口並以最大化顯示該窗口。
SW_SHOWMINIMIZED
2 激活窗口並以最小化顯示該窗口。
SW_SHOWMINNOACTIVE
7 最小化顯示窗口。活動窗口保持活動。
SW_SHOWNA
8 以當前狀態顯示窗口。活動窗口保持活動。
SW_SHOWNOACTIVATE
4 按窗口最近的大小和位置顯示。活動窗口保持活動。
SW_SHOWNORMAL
1 激活並顯示一個窗口。若窗口是最小化或最大化,則恢復到其原來的大小和位置。

 

blnWaitOnReturn
如果未指定 blnWaitOnReturn 或其值為 FALSE,則該方法立即返回到腳本繼續執行而不等待進程結束。
若 blnWaitOnReturn 設為 TRUE,則 Run 方法返回由應用程序返回的任何錯誤代碼。如果未指定 blnWaitOnReturn 或其值為 FALSE,則 Run 返回錯誤代碼 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)

3. 關於Shell.Application的使用
3.1、創建 Shell 對像
var Shell = new ActiveXObject("Shell.Application");

3.2、使用 Shell 屬性及方法

Shell.Application
Shell.Parent

Shell.CascadeWindows()
Shell.TileHorizontally()
Shell.TileVertically()
Shell.ControlPanelItem(sDir) /* 比如:sysdm.cpl */
Shell.EjectPC()
Shell.Explore(vDir)
Shell.Open(vDir)
Shell.FileRun()
Shell.FindComputer()
Shell.FindFiles()
Shell.Help()
Shell.MinimizeAll()
Shell.UndoMinimizeALL()
Shell.RefreshMenu()
Shell.SetTime()
Shell.TrayProperties()
Shell.ShutdownWindows()
Shell.Suspend()
oWindows = Shell.Windows() /* 返回ShellWindows對像 */
fFolder = Shell.NameSpace(vDir) /* 返回所打開的vDir的Folder對像 */
oFolder = Shell.BrowseForFolder(Hwnd, sTitle, iOptions [, vRootFolder]) /* 選擇文件夾對話框 */
/*示例:
function BrowseFolder()
{
var Message = "清選擇文件夾";

var Shell = new ActiveXObject( "Shell.Application" );
var Folder = Shell.BrowseForFolder(0,Message,0x0040,0x11);
if(Folder != null)
{
Folder = Folder.items(); // 返回 FolderItems 對像
Folder = Folder.item(); // 返回 Folderitem 對像
Folder = Folder.Path; // 返回路徑
if(Folder.charAt(varFolder.length-1) != "\\"){
Folder = varFolder + "\\";
}
return Folder;
}
}
*/

/*示例:
var Folder = Shell.NameSpace("C:\\"); // 返回 Folder對像
*/

沒有留言: