第 24 章 wsh 範例精選
DESCRIPTION
第 24 章 WSH 範例精選. 張智星 [email protected] http://mirlab.org/jang 台大資工系 MIR 實驗室. 本章大綱. 大綱 本章提供了各種常用 WSH 的程式範例,讓讀者能夠一覽 WSH 的典型應用。 主題 24-1 :桌面處理 24-2 :檔案處理 24-3 :目錄與磁碟機處理 24-4 :電腦系統管理 24-5 :網頁伺服器的管理 24-6 :通用表示法的應用 24-7 :網頁抓取與處理 24-8 :與資料庫整合 24-9 :使用 wsInetTools.dll - PowerPoint PPT PresentationTRANSCRIPT
JavaScript 程式設計與應用:用於單機的 WSH 環境
本章大綱 大綱
本章提供了各種常用 WSH 的程式範例,讓讀者能夠一覽 WSH 的典型應用。
主題 24-1 :桌面處理 24-2 :檔案處理 24-3 :目錄與磁碟機處理 24-4 :電腦系統管理 24-5 :網頁伺服器的管理 24-6 :通用表示法的應用 24-7 :網頁抓取與處理 24-8 :與資料庫整合 24-9 :使用 wsInetTools.dll 24-10 :傳送鍵盤事件
2 /29
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-1 主題:在桌面建立記事本的捷徑
連結:執行結果 檢視原始碼 程式碼
說明 執行上述程式後,你會在你的電腦桌面發現一個新捷徑,名稱為「 WSH 產生的記事本捷徑」。
WSHShell = WScript.CreateObject("WScript.Shell"); // 產生 WSH Shell DesktopPath = WSHShell.SpecialFolders("Desktop"); // 使用SpecialFolders 讀取桌面路徑 Shortcut1 = WSHShell.CreateShortcut(DesktopPath + "\\WSH 產生的記事本捷徑 .lnk"); // 於桌面上建立捷徑物件 (shortcut object) Shortcut1.TargetPath = "c:\\windows\\notepad.exe";Shortcut1.Save();
4/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-2 主題:將一段由 WSH 產生的文字送到剪貼簿
連結:執行結果 檢視原始碼 程式碼
說明 執行上述範例後,開啟記事本並按 Ctrl-v ,極可將剪貼簿中的文字貼到記事本。
How to set IE visible? Can you create a simpler example?
strCopy = " 這是被送至剪貼簿的文字 " objIE = WScript.CreateObject("InternetExplorer.Application"); objIE.visible = false;objIE.Navigate("about:blank"); objIE.document.parentWindow.clipboardData.setData("text", strCopy); objIE.Quit();
5/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-3 主題:對桌面視窗進行直接的串接
連結:執行結果 檢視原始碼 程式碼
說明 執行後,即可重疊顯示螢幕上的視窗 當桌面上太多視窗時,可用此方法整理
objShell = new ActiveXObject("Shell.Application"); objShell.CascadeWindows();
6/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-4 主題:對桌面視窗進行水平並排
連結:執行結果 檢視原始碼 程式碼
說明 此方法可以水平並排螢幕上的視窗
objShell = new ActiveXObject("Shell.Application");objShell.TileHorizontally();
7/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-5 主題:對桌面視窗進行垂直並排
連結:執行結果 檢視原始碼 程式碼
說明 執行後,即可垂直並排螢幕上的視窗
objShell = new ActiveXObject("Shell.Application");objShell.TileVertically();
8/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-6 主題:將 file1.txt 及 file2.txt 的內容寫到 file3.txt
連結:執行結果 檢視原始碼 程式碼重點
說明 file1.txt的檔案內容為”這是 file1.txt 的內容。”
file2.txt的檔案內容為”這是 file2.txt 的內容。”執行後的 file3.txt內容為”這是 file1.txt 的內容。這是 file2.txt 的內容。”
WScript.Echo(" 讀取第一個檔案: " + file1); c1=f1.ReadAll(); WScript.Echo(" 讀取第二個檔案: " + file2); c2=f2.ReadAll(); WScript.Echo(" 寫到第三個檔案: " + file3); f3.Write(c1); f3.Write(c2);
10/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-7 (1/2) 主題:若常讀取檔案,可以函數 fileRead() ,將讀取 的檔案內容送到陣列,便於進行逐列的處理。 連結:執行結果 檢視原始碼
說明: 第一段的程式碼是將檔案內容傳送至陣列 第二段的程式碼則是函數的定義 執行 fileRead01.js 後,將在 DOS 命令視窗印出此檔案的內容並加入列數,詳細內容見下頁
11/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-7 (2/2)列出 fileRead01.js 的內容並加上列數: 1.// 將檔案內容傳送至陣列 2.WScript.Echo(" 列出 "+WScript.ScriptName+" 的內容並加上列數: "); 3. WScript.Echo(""); 4. outputArray=fileRead(WScript.ScriptName); 5. for (i=0; i<outputArray.length; i++)6. WScript.Echo((i+1)+". " + outputArray[i]); 7. 8. // 函數定義9. function fileRead(File){ 10. var fso=new ActiveXObject("Scripting.FileSystemObject"); 11. var fid=fso.OpenTextFile(File); 12. var contents=fid.ReadAll(); 13. fid.Close(); 14. var output=contents.split("\n"); 15. return(output); 16. }
12/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-8 主題:使用 WSH 來讀取與檔案相關的性質
連結:執行結果 檢視原始碼 程式碼重點
說明 要抓出所有性質,我們可以從 for-in 迴圈著手。 Can someone give me a working example?
for (i=0; i<prop.length; i++) WScript.Echo("fileObj." + prop[i] + " = " + eval("fileObj."+prop[i]));
13/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-9 主題:顯示某一個資料夾的大小
連結:執行結果 檢視原始碼 程式碼
說明: 執行上述程式後,典型顯示結果如下:目錄的大小是
15365403102 bytes. 若 folderPath 設定成 C 槽,會有權限問題,如何解決?
fso = new ActiveXObject("Scripting.FileSystemObject"); folderPath = “F:\\competition\\KDD"; objFolder = fso.GetFolder(folderPath); WScript.Echo(folderPath + " 目錄的大小是 " + objFolder.Size + " bytes.");
15/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-10 主題:使用 WSH 顯示目前工作目錄,或是改變目前工作目錄 連結:執行結果 檢視原始碼 程式碼
說明: 典型顯示結果如下:
目前工作目錄: D:\users\jang\books\wsh\example 改變目前工作目錄至: c:\windows\temp
Not working! Help needed…
WshShell=new ActiveXObject("WScript.Shell"); WScript.Echo(" 目前工作目錄: "+WshShell.CurrentDirectory); WshShell.CurrentDirectory = "c:\\windows\\temp"; WScript.Echo(" 改變目前工作目錄至: "+WshShell.CurrentDirectory);
16/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-11 主題:列出一特定目錄下的所有檔案
連結:執行結果 檢視原始碼 程式碼
說明: 執行後即可列出 c:\windows\temp 目錄下的所有檔案
fso = new ActiveXObject("Scripting.FileSystemObject");folderPath="c:\\windows\\temp";fsoFolder = fso.GetFolder(folderPath);fileList = new Enumerator(fsoFolder.Files);WScript.Echo("Files under \""+folderPath+"\":");for (fileList.moveFirst(); !fileList.atEnd(); fileList.moveNext())
WScript.Echo(fileList.item());
17/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-12 主題:列出磁碟機及其相關性質
連結:執行結果 檢視原始碼 說明:典型顯示結果如下
C: x.DriveType = 2 ( 硬碟 ) x.ShareName = x.IsReady = true x.VolumeName = x.AvailableSpace = 24901296128
Bytes D:
x.DriveType = 2 ( 硬碟 ) x.ShareName =
... 18/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-13 主題:列出與 SYSTEM 相關的重要環境變數 連結:執行結果 檢視原始碼
說明:重要的環境變數: windir = %SystemRoot% path = %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\matlab6p 5\bin\win32;C:\Program Files\Microsoft SQL Server\90\Tools\binn\ NUMBER_OF_PROCESSORS = 1 OS = Windows_NT PROCESSOR_ARCHITECTURE = x86temp = %SystemRoot%\TEMP
20/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-14 主題:列出與 SYSTEM 相關的全部環境變數 連結:執行結果 檢視原始碼 程式碼重點WScript.Echo(" 所有的 SYSTEM 環境變數列表: ");
WScript.Echo("No. of env. variables = "+envObj.length); var Enum=new Enumerator(envObj) for (Enum.moveFirst(); !Enum.atEnd(); Enum.moveNext()) WScript.Echo(Enum.item());
21/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-15 主題:列出與 PROCESS 相關的全部環境變數 連結: 執行結果 檢視原始碼 程式碼重點WScript.Echo(" 所有的 PROCESS 環境變數列表: ");
WScript.Echo("No. of env. variables = "+envObj.length); var Enum=new Enumerator(envObj) for (Enum.moveFirst(); !Enum.atEnd(); Enum.moveNext()) WScript.Echo(Enum.item());
22/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-17 主題:列出電腦、網域名稱及使用者名稱等資訊
連結:執行結果 檢視原始碼 程式碼
wshNetwork=WScript.CreateObject("WScript.Network"); WScript.Echo(" 電腦名稱: " + wshNetwork.ComputerName); WScript.Echo(" 網域名稱: " + wshNetwork.UserDomain); WScript.Echo(" 使用者名稱: " + wshNetwork.UserName);
24/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-18 主題:顯示此機器的所有使用者
連結:執行結果 檢視原始碼 說明
如果使用者只有一個,通常是 administrator 。
25/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-19 主題:列出 IIS 網頁伺服器的性質
連結:執行結果 檢視原始碼 說明
可以修改性質來更改 iis 各種屬性。
27/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-20 主題:產生虛擬目錄
連結: 執行結果 檢視原始碼 說明
首先定義位址物件,“ IIS://LocalHost/W3SVC/1/Root”表示於預設的 Web 站台的主目錄下建立虛擬目錄。
使用“Create("IISWebVirtualDir","虛擬目錄名稱 ")”方法,以建立虛擬目錄。
執行後產生的虛擬目錄是 winTemp,對應到實際硬碟的目錄是 c:\windows\temp。經由「控制台 /系統管理工具 /Internet Information Services」可以開啟 IIS 管理介面,以確認虛擬目錄 winTemp 的存在。
28/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-21 主題:使用 WSH 來控制 IIS 網頁伺服器
連結:執行結果 檢視原始碼 程式碼
說明 範例中,我們可以對 IIS 進行暫停、繼續、停止、啟動等控制。
iisObj = GetObject("IIS://LocalHost/W3SVC/1");iisObj.Pause(); WScript.Echo("暫停 IIS 伺服器! "); iisObj.Continue(); WScript.Echo("繼續 IIS 伺服器! "); iisObj.Stop(); WScript.Echo("停止 IIS 伺服器! ");iisObj.Start(); WScript.Echo(" 啟動 IIS 伺服器! ");
29/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
24-6 :通用表示法的應用
本小節說明在 WSH 也可以使用通用表示法,此方式可以讓我們很快地在大量文字中間找到我們所要的資訊。
30/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-22 主題:找出一個網頁的標題
連結:執行結果 檢視原始碼 說明
此程式碼會重從 test.htm 找出此網頁的標題,印出結果如下
在上述範例中, title[1] 和 RegExp.$1 儲存相同的結果。
網頁標題 = 國立臺灣大學 資訊工程學系網頁標題 = 國立臺灣大學 資訊工程學系
31/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-23 主題:找出以 JScript 為主 WSH 檔案的第一列註解
連結:執行結果 檢視原始碼 程式碼重點
說明 印出結果
本範例前半段與上一範例相同
WScript.Echo(" 第一註解列 = " + title[1]);
第一註解列 = 抓出 WSH 程式碼( JScript)的第一註解列
32/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-24 主題:對範例目錄製作 index.asp 的檔案
Webpage: remote host, local host 說明
採用 6-2 的方式,可以對範例目錄製作一個 index.asp 的檔案,即時地將每一個 js 檔案的第一列註解列印出來,形成一頁對 WSH 的所有 JScript 範例的列表和簡單說明
33/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-25 主題:從一段文字中,抽取連結文字與相關網址
連結:執行結果 檢視原始碼 說明
顯示結果如下: <a href ="url1">text1</a> ===> URL=url1, TEXT=text1 <a href ="url2">text2</a> ===> URL=url2, TEXT=text2 <a href ="url3">text3</a> ===> URL=url3, TEXT=text3
34/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-26 主題:從一個檔案中,抽取連結文字與相關網址
連結:執行結果 檢視原始碼 說明
務必將程式碼 linkExtraction02.js 和網頁檔案 test.htm 放在同一個目錄。
35/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
使用 InetCtls.Inet 若要使用 WSH 來直接抓取網頁,可以使用 Visual
Basic 6 的元件 InetCtls.Inet 安裝方法如下
從下列網址下載壓縮檔案 msinet.cab :http://activex.microsoft.com/controls/vb6/msinet.cab
(近端備份: ...\wsh\download\msinet.cab ) 對 msinet.cab 進行解壓縮,得到 MSINET.INF 和
MSINET.OCX ,將這兩個檔案放到 c:\windows\system32 目錄下。
開啟 DOS 視窗,進入 c:\windows\system32 目錄,執行「 regsvr32 msinet.ocx 」,即可完成安裝。 37/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-27 主題:使用 WSH 來直接抓取網頁
連結:執行結果 檢視原始碼 程式碼
說明 欲下載之網頁與設定的嘗試時間皆可依需求更改
inet=new ActiveXObject("InetCtls.Inet"); // 取得 Inet Control 物件 inet.Url="http://www.cs.nthu.edu.tw"; // 欲下載之網頁 inet.RequestTimeOut=60; // 設定嘗試時間 WScript.Echo("Downloading \""+inet.Url+"\"..."); content = inet.OpenURL(); // 下載網頁 WScript.Echo(content); // 顯示網頁內容
38/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-28 主題:使用通用運算式,便可以在抓取網頁後,顯示此網頁的標題 連結:執行結果 檢視原始碼 程式碼重點
說明 最後一行的功能為顯示結果
WScript.Echo("Downloading \""+inet.Url+"\"..."); content = inet.OpenURL(); // 下載網頁 pattern = /<title>(.*)<\/title>/i; // 定義通用表示式 title = pattern.exec(content); // 抓出標題 WScript.Echo(" 位於「 "+inet.Url+" 」的網頁的標題是「 "+RegExp.$1+" 」! ");
39/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-29 主題:在抓取一個網頁後,立即將網頁儲存到硬碟中的某個檔案 連結:執行結果 檢視原始碼 程式碼
說明 此段程式碼的目的是將網頁內容寫入本機檔案
fso = new ActiveXObject("Scripting.FileSystemObject"); forReading=1, forWriting=2; fileName="test.htm"; fid=fso.OpenTextFile(fileName, forWriting, true); fid.Write(content); fid.Close(); WScript.Echo(" 從「 "+inet.Url+" 」抓到的內容已被存入「 "+fileName+" 」! ");
40/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-30 主題:利用通用表示法抓出網頁中連結和相關文字
連結:執行結果 檢視原始碼 程式碼重點
pattern=/<A(.*?)<\/A>/gi; // 定義通用表示式 found=content.match(pattern); // 抓出連結 pattern2=/<\s*A\s+HREF\s*=\s*"?(.*?)"?\s*>(.*?)<\s*\/\s*A\s*>/i; // 另一個通用運算式 for (i=0; i<found.length; i++){ pattern2.exec(found[i]); WScript.Echo(found[i]+" ===> URL="+RegExp.$1+", TEXT="+RegExp.$2); } // 抓出連結的網址以及連結的文字
41/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-31 主題:使用WinHttpRequest物件抓取 Google首頁
連結:執行結果 檢視原始碼 說明
可以暫停網路,再試看看此範例,就會印出抓不到網頁的錯誤訊息了 前面範例所用的 InetCtls.Inet 元件,比較簡單,所以無法偵測網路斷線的情況,而 IIS內建的元件
WinHttp.WinHttpRequest,則有較多偵錯功能可以應付斷線的情況
42/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-31 主題:用 WSH 來對資料庫列表
連結:執行結果 檢視原始碼 說明
執行後,在 DOS 命令視窗印出結果如下
原先以 JScript 進行資料庫列表的連結: listdb01.asp
欄位名稱: ssn account name team score 每一筆資料: 14 abc 葉佳慧 5 33.33 15 ABC 林政源 5 55.65 17 jtchen 陳江村 3 48.76 18 aBc 高名揚 1 67.88
44/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-32 主題:以 wsh 對資料庫進行新增
連結:執行結果 檢視原始碼 程式碼重點
說明 SQL 指令的 where 條件式是不分大小寫的,所以如果條件式是 name=‘abc’ ,抓出來的資料可能包含 ‘ abc’ 、‘ ABC’ 、‘ aBc’ 等資料,若要解決此問題,請見下一個範例。
SQL="INSERT INTO testTable ([account], [name]) VALUES ('new1', 'new2')"; Conn.Execute(SQL);
45/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-33 主題:使用 strcomp 函數避免 SQL 大小寫問題
連結:執行結果 檢視原始碼 程式碼重點
說明 sql2screen() 函數的功能是將 SQL 指令的結果列印在螢幕上,下個範例將說明如何把結果記錄在檔案中
sql="select * from testTable where account='abc'"; WScript.Echo(" 大小寫不分的比對: sql = "+sql); WScript.Echo("比對結果: "); sql2screen("test.mdb", sql); sql="select * from testTable where strcomp(account, 'abc',0)=0"; WScript.Echo(" 大小寫有別的比對: sql = "+sql); WScript.Echo("比對結果: "); sql2screen("test.mdb", sql);
46/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-34 主題:將 SQL 指令的結果記錄在檔案之中
連結:執行結果 檢視原始碼 說明
此範例會將 testTable 資料表的內容儲存到 output.txt 。
sql2file() 函數的功能即是將 SQL 指令的結果記錄在檔案之中。
47/61
JavaScript 程式設計與應用:用於單機的 WSH 環境 wsInetTools.dll 的功能與下
載 我們可以經由各種元件來加強 WSH 的功能 wsInetTools.dll 是一個使用 C++ 開發的元件,主要有下列三項功能 抓取網頁 抓取二進制檔案(例如 mp3 、 midi 等檔案) 寄發電子郵件
http://www.winscripter.com/Downloads/default.aspx 可下載相關的 zip 檔案,解開以後,就可以看到 wsInetTools.dll 及相關的範例及說明。相關的說明,可見下載後的 index.htm
49/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
使用 wsInetTools.dll 使用此元件之前,必須先將此元件登錄於系統之中,可以分成兩步驟: 將 wsInetTools.dll 拷貝到 c:\windows\
system32\ 之下。 點選「開始 / 執行」,然後輸入 「 regsvr32 wsInetTools.dll 」,按下「確定」,就完成了元件登錄的動作。
完成上述步驟後,就可以開始使用wsInetTools.dll
50/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-35 主題:直接抓取 HTML 網頁
連結:執行結果 檢視原始碼 程式碼
說明 此範例使用了 wsInetTools.dll 抓取 HTML 檔案
web = new ActiveXObject("wsInetTools.HTTP"); // 取得 COM 物件 url = "http://www.cs.nthu.edu.tw"; // 欲下載之網頁 contents = web.GetWebPage(url); // 開始下載網頁 WScript.Echo(" 下載「 "+url+" 」成功!檔案內容如下: "); WScript.Echo(contents); // 顯示網頁內容
51/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-36 主題:抓取二進制檔案
連結:執行結果 檢視原始碼 程式碼重點
說明 二進制檔案,即例如 MIDI 或 MP3 檔案等。
remoteFile = “http://neural.cs.nthu.edu.tw/jang/books/JavaScript/example/music/tomorrow.mid”; // 遠端檔案 localFile = "tomorrow.mid"; // 本機檔案 web.GetBinary(remoteFile, localFile); // 開始下載 WScript.Echo(" 下載「 "+remoteFile+" 」成功! "); WScript.Echo("存成近端檔案:「 "+localFile+" 」! ");
52/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-37 主題:寄發郵件
連結:執行結果 檢視原始碼 程式碼重點
說明 利用此元件,我們也可以在 ASP 的程式碼裡面寄送郵件
mail.MailServer = "wayne.cs.nthu.edu.tw"; // 設定郵件伺服器 from = "[email protected]"; // 發信人 to = "[email protected]"; // 收信人 subject = "Testing wsInetTools"; // 主題 body = "This is just a test message.\r\n Please ignore it.\r\n\r\nRoger Jang"; // 內文 mail.SendMail(from, to, subject, body); // 開始寄發郵件 WScript.Echo("寄送郵件成功! ");
53/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-38 主題:開啟 IE 並執行列印的動作
連結:執行結果 檢視原始碼 說明
WshShell.SendKeys("%{f}") 代表執行 Alt-f 按鍵, WshShell.SendKeys("p") 代表執行按鍵 p ,而 WshShell.SendKeys("{ENTER}") 代表執行按鍵 Enter ,依此類推。
插進幾列 WScript.Sleep(1000) ,則在按鍵後,會先等候 1 秒鐘,此方法可使整個操作過程更加穩定
55/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
特殊按鍵的相關呼叫方式 (1)
按鍵 呼叫方式 SHIFT +
CONTROL ^
ALT %
LEFT ARROW {LEFT}
RIGHT ARROW {RIGHT}
UP ARROW {UP}
DOWN ARROW
{DOWN}
{ {{}
} {}}
[ {[}
] {]}
按鍵 呼叫方式 ~ {~}
+ {+}
^ {^}
BACKSPACE {BACKSPACE}, {BS}, or {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE
{DELETE} or {DEL}
END {END}
ENTER {ENTER} or ~
ESC {ESC}
HELP {HELP} 56/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
特殊按鍵的相關呼叫方式 (2)按鍵 呼叫方式 F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
按鍵 呼叫方式 HOME {HOME}
INS or INSERT {INSERT} or {INS}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN
{PRTSC}
SCROLL LOCK {SCROLLLOCK}
57/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-39 主題:開啟記事本並寫入文字
連結:執行結果 檢視原始碼 說明
使用 SendKeys 去開啟記事本並寫入文字、存檔於 junk.txt
在此範例中,我們可以將英文寫入記事本,但若要將中文送入,以目前的試驗來說,會出現亂碼。一個簡單的解決方案,就是先將中文送剪貼簿,再貼到記事本即可。
58/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-40 主題:開啟 IE 並設定預設網頁
連結:執行結果 檢視原始碼 程式碼
說明 第三個“ WScript.Sleep(5000);” 是等待網頁載入
WshShell=new ActiveXObject("WScript.Shell"); WshShell.Run("iexplore", 9); WScript.Sleep(5000); WshShell.SendKeys("%t"); WshShell.SendKeys("o"); WScript.Sleep(500); WshShell.SendKeys("http://www.google.com"); WScript.Sleep(500); for (i=0; i<13; i++) WshShell.SendKeys("{TAB}"); WshShell.SendKeys("{ENTER}"); WScript.Sleep(500);
59/61
JavaScript 程式設計與應用:用於單機的 WSH 環境
範例 24-41 主題:利用記事本讀入一個文字檔,將文字檔的編碼方式改成 UTF-8 ,並另存新檔 連結:執行結果 檢視原始碼
說明 利用 UTF-8 的編碼方式,就可以同時顯示各國不同的文字於同一個文字檔案。
如果輸入檔名是相對路徑,則在使用前,必需確認 notepad 的預設儲存目錄是正確的目錄
若要檢視這兩個檔案的不同,可用網頁瀏覽器來顯示這兩個檔案,並由下拉選單「檢視 /編碼」,就可以看出這兩個檔案在編碼上的不同。
60/61