===================================
VBS例子講解--1: 用 run運行文件 set shl="createobject"("WScript.Shell") shl.run"regedit.exe" set shl="nothing"
VBS例子講解--2: 用 FSO復制文件 Set shl = CreateObject("Scripting.FileSystemObject") shl.CopyFile "c:\1.txt","d:\" set shl = nothing
=========================================================
CreateObject
描述創建并返回對象的引用。語法
CreateObject(class)
class 參數使用語法 servername.typename,有以下部分:
部分描述 servername 提供對象的應用程序名稱。 typename 要創建的對象類型或類。
說明 Automation 服務器至少提供一種對象類型。例如,字處理應用程序可以提供應用程序對象、文檔對象和工具條對象。要創建 Automation 對象,將 CreateObject 函數返回的對象賦值給某對象變量:
Dim ExcelSheet Set ExcelSheet = CreateObject("Excel.Sheet") ' 使 Excel 在整個 Application 對象中都可見。 ExcelSheet.Application.Visible = True
' 將一些文本放入工作表的第一個單元格中。
ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1" ' 保存工作表。 ExcelSheet.SaveAs "C:\TEST.XLS" ' 關閉 Excel,使 Quit 方法處于 Application 對象中。 ExcelSheet.Application.Quit ' 釋放對象變量。 Set ExcelSheet = Nothing
================================== Set
將對象引用賦給一個變量或屬性,或者將對象引用與事件關聯。
createobject("WScript.Shell").run"regedit.exe"
和下面的 3句句有同樣效果。
set shl="createobject"("WScript.Shell") shl.run"regedit.exe" set shl="nothing"
但如果我要使用多個 CreateObject對象的時候,就要寫很多個 CreateObject("WScript.Shell")出來。內容如下:
createobject("WScript.Shell").run"regedit.exe" CreateObject("WScript.Shell").popup"注冊表已經被運行" 上面例子會給我們造成很多麻煩和工作量。這個時候我們可以使用 set來吧 CreateObject("WScript.Shell")對象付給一個變量。
以后只要對變量訪問就相當于對 CreateObject("WScript.Shell")訪問了。 set shl="createobject"("WScript.Shell") shl.run"regedit.exe" shl.popup"注冊表已經被運行" set shl="nothing"
Nothing
可選項。斷開 shl與任何指定對象或類的關聯。當沒有其它變量引用前面的引用對象時,將 shl賦值為 Nothing 以釋放與前面的引用對象相關聯的系統或內存資源。
WScript 對象介紹屬性/方法/對象。屬性=一個物體本身具有的一種特性。方法=一個物體能夠做某件事情,完成某件事情的時候就要用到方法。
WScript屬性的演示例子:運行 WScript屬性的格式為: WScript.屬性名。
關于屬性--實例: WScript.Echo (WScript.FullName) 'FullName 屬性是代表主機可執行文件的完全限定路徑的只讀字符串。 WScript.Echo (WScript.Name) '返回 WScript 對象(主機可執行文件)的名稱 WScript.Echo (WScript.Path) '返回包含主機可執行文件(CScript.exe 或 WScript.exe)的路徑名稱。
WScript.Echo WScript.ScriptName
'返回當前運行腳本的文件名。
wscript.echo WScript.ScriptFullName
'返回當前運行腳本的完整路徑。
WScript.Echo WScript.Version '返回 Windows 腳本宿主的版本
WScript方法的演示例子:運行 WScript方法的格式為: WScript.方法名(操作的內容)
關于方法--實例: WScript.Echo ("hello")
'將文本輸出到消息框中或命令控制臺窗口。
wscript.echo "hello1" WScript.Quit (1) wscript.echo "hello2" 'WScript.Quit強制腳本隨時停止執行。 '(1)參數可選。作為過程的退出代碼而返回的整數值。此例子中返回的是 1。 =================================================================== wscript.echo "hello1" WScript.Sleep 1000 wscript.echo "hello2" WScript.Sleep 1000 wscript.echo "hello3"
'在指定的時間長度內將腳本執行掛起,然后繼續執行。 '參數,表示腳本過程處于不活動狀態的時間間隔(毫秒)的整數值。
實例 2:
set WshShell = WScript.CreateObject("WScript.Shell")
'創建快捷方式
strDesktop = WshShell.SpecialFolders("Desktop") set oShellLink = WshShell.CreateShortcut(strDesktop & "\VBS的快捷方式.lnk") oShellLink.TargetPath = WScript.ScriptFullName oShellLink.WindowStyle = 1 oShellLink.Hotkey = "Ctrl+Alt+e" oShellLink.IconLocation = "notepad.exe, 0" oShellLink.Description ="VBS程序的快捷方式" oShellLink.WorkingDirectory = strDesktop oShellLink.Save '創建 URL set oUrlLink = WshShell.CreateShortcut(strDesktop & "\劍思庭博客.url") oUrlLink.TargetPath = "http://blog.cechina.cn/jiansiting"
oUrlLink.Save
相關參數說明: WshShell 對象的屬性: .SpecialFolders '返回 SpecialFolders 對象(特殊文件夾集)。
下面的特殊文件夾可用: Desktop --->桌面 Favorites --->收藏夾 Fonts --->C:\WINDOWS\Fonts目錄 MyDocuments -->我的文檔 Programs -->c:\program files\ SendTo -->發送到 StartMenu -->開始菜單等等
.CurrentDirectory屬性
'檢索或更改當前活動目錄。 'CurrentDirectory 返回一個字符串,其中包含活動過程的當前工作目錄的完全限定路徑。 Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WScript.Echo WshShell.CurrentDirectory
===============
WshShell 對象的方法: .CreateShortcut
'創建新的快捷方式,或打開現有的快捷方式。
'object.CreateShortcut(strPathname) '參數 'object 'WshShell 對象。 'strPathname
'表示要創建的快捷方式的路徑名的字符串值。說明 'CreateShortcut 方法返回 WshShortcut 對象或 WshURLShortcut 對象。只調用 CreateShortcut
'方法并不會導致快捷方式的創建。快捷方式對象以及對其所做的更改存儲在內存中, '直到您用 Save方法將其保存到磁盤中為止。要創建快捷方式,必須執行以下操作: '創建 WshShortcut 對象的實例。 '初始化它的屬性。 '用 Save 方法將其保存到磁盤中。
'注意一個常見的問題是,將參數放在快捷方式對象的 TargetPath 屬性中將不起作用。快捷方式的所有參數都必須放在 'Arguments 屬性中。
WshShortcut 對象中的屬性介紹:
.TargetPath
'快捷方式的可執行文件的路徑。
'object.TargetPath '參數 'object 'WshShortcut 或 WshUrlShortcut 對象。 '說明 '字符串。 '該屬性僅用于快捷方式的目標路徑。快捷方式的任何參數都必須放在參數的屬性中。
.WindowStyle
為快捷方式指派窗口樣式,或確定快捷方式使用的的窗口樣式類型。
object.WindowStyle = intWindowStyle
參數
object WshShortcut 對象。 intWindowStyle
設置正在運行的程序的窗口樣式。說明 WindowStyle 屬性返回一個整數。
下表列出了 intWindowStyle 的可用設置。
intWindowStyle 說明 1 激活并顯示窗口。如果該窗口被最小化或最大化,則系統將其還原到初始大小和位置。 3 激活窗口并將其顯示為最大化窗口。 7 最小化窗口并激活下一個頂級窗口。
.Hotkey
為快捷方式指派組合鍵,或確定指派給快捷方式的組合鍵。
object.Hotkey = strHotkey
參數
object WshShortcut 對象。 strHotkey
代表指派給快捷方式的組合鍵的字符串。語法 strHotkey 的語法為:
[KeyModifier]KeyName KeyModifier可以是以下的任何一個組合鍵:ALT+、CTRL+、SHIFT+、EXT+。注意 EXT+ 表示“擴展鍵”。—此處是為了防止日后將新的 SHIFT-鍵類型添加到字符集內。
KeyName a ... z、 0 ... 9、F1 F12 ... KeyName 不區分大小寫。
說明熱鍵是一組組合鍵,當同時按下所有相關鍵時將啟動快捷方式。
熱鍵可用于啟動系統桌面和 Windows“開始”菜單中的快捷方式。注意熱鍵的另一個名稱叫做“鍵盤快捷方式”。在 Windows 2000 中,有效的熱鍵總是以 CTRL + ALT 開頭。
.IconLocation
為快捷方式指派圖標,或確定指派給快捷方式的圖標。
object.IconLocation = strIconLocation
參數
object WshShortcut 對象。 strIconLocation
用于查找該圖標的字符串。該字符串應包含與該圖標相關聯的完全限定路徑和索引。有關詳細信息,請參見示例。說明
字符串。
.Description
返回快捷方式的說明。
object.Description
參數
object WshShortcut 對象。說明 Description 屬性中包含一個說明快捷方式的字符串值。
.WorkingDirectory
為快捷方式指派工作目錄,或者確定快捷方式使用的工作目錄。
object.WorkingDirectory = strWorkingDirectory
參數
object WshShortcut 對象。 strWorkingDirectory
字符串。快捷方式的啟動目錄。說明
字符串。
.FullName
返回快捷方式對象目標的完全限定路徑。
object.FullName
參數
object WshShortcut 對象。說明
FullName 屬性中包含一個表示快捷方式目標的完全限定路徑的只讀字符串值。
WshShortcut 對象中的方法介紹:
.Save
將快捷方式對象保存到磁盤中。
object.Save
參數
object WshShortcut 或 WshUrlShortcut 對象。說明
使用 CreateShortcut 方法創建快捷方式對象并設置快捷方式對象的屬性后,必須用 Save 方法將快捷方式對象保存到磁盤中。Save 方法使用快捷方式對象的 FullName 屬性中的信息,確定快捷方式對象在磁盤上的保存位置。只可創建系統對象的快捷方式,包括文件、目錄和驅動器(不包括打印機鏈接或調度任務)。
WshUrlShortcut 對象 WshShell對象介紹
set WshShell = CreateObject("WScript.Shell") WScript.Echo (WshShell.CurrentDirectory)
CurrentDirectory 屬性
請參閱
WshShell 對象
語言
VBScript
顯示所有語言檢索或更改當前活動目錄。
object.CurrentDirectory
參數
object WshShell 對象。說明
CurrentDirectory 返回一個字符串,其中包含活動過程的當前工作目錄的完全限定路徑。
==========================
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 100
WshShell.AppActivate "notepad"
WScript.Sleep 100
WshShell.SendKeys "1"
WScript.Sleep 500
WshShell.SendKeys "{+}"
WScript.Sleep 500
WshShell.SendKeys "2"
WScript.Sleep 500
WshShell.SendKeys "="
WScript.Sleep 2500
AppActivate 方法請參閱運行腳本 | WshShell 對象 | SendKeys 方法激活應用程序窗口。
object.AppActivate title
參數
object WshShell 對象。 title
指定要激活哪個應用程序。它可以是包含應用程序的標題(和出現在標題欄中的一樣)或過程 ID 的字符串。說明 AppActivate 方法返回的布爾值表示過程調用是否成功。該方法將焦點轉移到命名應用程序或窗口中,但是并不影響應用程序或窗口是最大化還是最小化。用戶執行更改焦點的操作(或關閉窗口)時,焦點移離活動的應用程序窗口。
在確定要激活哪個應用程序時,指定的標題將與正在運行的每個應用程序的標題字符串相比較。如果不存在完全匹配的標題,則將激活標題字符串以 title 開頭的所有應用程序。如果還是找不到任何應用程序,則將激活標題字符串以 title 結尾的所有應用程序。如果存在多個名為 title 的應用程序實例,則將隨機激活一個實例。
將一個或多個鍵擊發送到活動窗口(仿佛是在鍵盤上擊鍵一樣)。
object.SendKeys(string)
參數
object WshShell 對象。 string
表示要發送的鍵擊(一個或多個)的字符串值。說明使用 SendKeys 方法可以將鍵擊發送到無自動化界面的應用程序中。多數鍵盤字符都可用一個鍵擊表示。某些鍵盤字符由多個鍵擊組合而成(例如,CTRL+SHIFT+HOME)。要發送單個鍵盤字符,請將字符本身作為 string 參數發送。例如,要發送字母 x,則請發送 string 參數 "x"。
注意要發送空格,則請發送字符串 " "。可使用 SendKeys 同時發送多個鍵擊。為此,可將每個鍵擊按順序排列在一起,以此來創建表示一系列鍵擊的復合字符串參數。例如,要發送鍵擊 a、b 和 c,則需要發送字符串參數 "abc"。SendKeys 方法將某些字符用作字符的修飾符(而不使用其本身的含義)。這組特殊的字符可包括圓括號、中括號、大括號,以及:
用大括號 "{}" 括起這些字符可以發送它們。例如,要發送加號,請使用字符串參數 "{+}"。 SendKeys中使用的中括號 "[ ]" 無任何特殊含義,但是必須把它們括在大括號中,以便容納確實要賦予其特殊含義的應用程序(例如,對于動態數據交換 (DDE) 就是這樣)。
要發送左中括號字符,請發送字符串參數 "{[]";要發送右中括號字符,請發送字符串參數 "{]}"。要發送左大括號字符,請發送字符串參數 "{{}";要發送右大括號字符,請發送字符串參數 "{}}"。某些鍵擊不生成字符(如 ENTER 和 TAB)。某些鍵擊表示操作(如 BACKSPACE 和 BREAK)。要發送這些類型的鍵擊,請發送下表中列出的參數:
鍵參數退格鍵 {BACKSPACE}、{BS} 或 {BKSP} BREAK {BREAK} CAPS LOCK {CAPSLOCK} DEL 或 DELETE {DELETE} 或 {DEL}向下鍵 {DOWN} END {END} ENTER {ENTER} 或 ~ ESC {ESC} HELP {HELP} HOME {HOME} INS 或 INSERT {INSERT} 或 {INS}向左鍵 {LEFT} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC}向右鍵 {RIGHT} SCROLL LOCK {SCROLLLOCK} TAB {TAB}向上鍵 {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} F13 {F13} F14 {F14} F15 {F15}
F16 {F16}
要發送由常規鍵擊和 SHIFT、CTRL 或 ALT 組合而成的鍵盤字符,請創建表示該鍵擊組合的復合字符串參數。可通過在常規鍵擊之前添加一個或多個以下特殊字符來完成上述操作:
鍵特殊字符
SHIFT + CTRL ^ ALT %
注意這樣使用時,不用大括號括起這些特殊字符。要指定在按下多個其它鍵時,按下 SHIFT、CTRL 和 ALT 的組合,請創建復合字符串參數,用括號括起其中的組合鍵。例如,要發送的組合鍵指定:
如果在按 e 和 c 的同時按 SHIFT 鍵,則發送字符串參數 "+(ec)"。如果在按 e 時只按 c(而不按 SHIFT),則發送字符串參數 "+ec"。可使用 SendKeys 方法發送一種在一行內重復按鍵的鍵擊。為此,要創建復合字符串參數,以指定要重復的鍵擊,并在其后指定重復次數。可使用 {鍵擊數字} 形式的復合字符串參數來完成上述操作。例如,如果要發送 10 次 "x",則需要發送字符串參數 "{x 10}"。請確保在鍵擊和數字之間有一個空格。
注意只可以發送重復按一個鍵的鍵擊。例如,可以發送 10 次 "x",但不可發送 10 次 "Ctrl+x"。注意不能向應用程序發送 PRINT SCREEN 鍵 {PRTSC}。