Presentation is loading. Please wait.

Presentation is loading. Please wait.

張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR實驗室 第24章 WSH 範例精選 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR實驗室.

Similar presentations


Presentation on theme: "張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR實驗室 第24章 WSH 範例精選 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR實驗室."— Presentation transcript:

1 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR實驗室
第24章 WSH 範例精選 張智星 台大資工系 MIR實驗室

2 本章大綱 大綱 主題 本章提供了各種常用 WSH 的程式範例,讓讀者能夠一覽 WSH 的典型應用。 24-1:桌面處理 24-2:檔案處理
24-3:目錄與磁碟機處理 24-4:電腦系統管理 24-5:網頁伺服器的管理 24-6:通用表示法的應用 24-7:網頁抓取與處理 24-8:與資料庫整合 24-9:使用 wsInetTools.dll 24-10:傳送鍵盤事件

3 24-1:桌面處理 本小節將說明如何使用 WSH 來對電腦桌面進行簡單的管理。

4 範例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();

5 範例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();

6 範例24-3 主題:對桌面視窗進行直接的串接 說明 連結:執行結果 檢視原始碼 程式碼 執行後,即可重疊顯示螢幕上的視窗
連結:執行結果 檢視原始碼 程式碼 說明 執行後,即可重疊顯示螢幕上的視窗 當桌面上太多視窗時,可用此方法整理 objShell = new ActiveXObject("Shell.Application"); objShell.CascadeWindows();

7 範例24-4 主題:對桌面視窗進行水平並排 說明 連結:執行結果 檢視原始碼 程式碼 此方法可以水平並排螢幕上的視窗
連結:執行結果 檢視原始碼 程式碼 說明 此方法可以水平並排螢幕上的視窗 objShell = new ActiveXObject("Shell.Application"); objShell.TileHorizontally();

8 範例24-5 主題:對桌面視窗進行垂直並排 說明 連結:執行結果 檢視原始碼 程式碼 執行後,即可垂直並排螢幕上的視窗
連結:執行結果 檢視原始碼 程式碼 說明 執行後,即可垂直並排螢幕上的視窗 objShell = new ActiveXObject("Shell.Application"); objShell.TileVertically();

9 24-2:檔案處理 本小節將以範例說明WSH 對於檔案的讀寫

10 範例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);

11 範例24-7 (1/2) 說明: 主題:若常讀取檔案,可以函數 fileRead(),將讀取 的檔案內容送到陣列,便於進行逐列的處理。
連結:執行結果 檢視原始碼 說明: 第一段的程式碼是將檔案內容傳送至陣列 第二段的程式碼則是函數的定義 執行fileRead01.js後,將在 DOS 命令視窗印出此檔案的內容並加入列數,詳細內容見下頁

12 範例24-7 (2/2) 列出 fileRead01.js 的內容並加上列數: // 將檔案內容傳送至陣列
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. }

13 範例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]));

14 24-3:目錄與磁碟機處理 本小節將以範例說明WSH 對於目錄與磁碟機處理

15 範例24-9 主題:顯示某一個資料夾的大小 說明: 連結:執行結果 檢視原始碼 程式碼
連結:執行結果 檢視原始碼 程式碼 說明: 執行上述程式後,典型顯示結果如下:目錄的大小是 bytes. 若 folderPath 設定成 C 槽,會有權限問題,如何解決? fso = new ActiveXObject("Scripting.FileSystemObject"); folderPath = “F:\\competition\\KDD"; objFolder = fso.GetFolder(folderPath); WScript.Echo(folderPath + " 目錄的大小是 " + objFolder.Size + " bytes.");

16 範例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);

17 範例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());

18 範例24-12 主題:列出磁碟機及其相關性質 說明:典型顯示結果如下 連結:執行結果 檢視原始碼
連結:執行結果 檢視原始碼 說明:典型顯示結果如下 C: x.DriveType = 2 (硬碟) x.ShareName = x.IsReady = true x.VolumeName = x.AvailableSpace = Bytes D: x.DriveType = 2 (硬碟) x.ShareName = ...

19 24-4:電腦系統管理 本小節將以範例說明WSH 對於電腦系統的管理

20 範例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 = x86 temp = %SystemRoot%\TEMP

21 範例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());

22 範例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());

23 範例24-17 主題:列出電腦、網域名稱及使用者名稱等資訊 連結:執行結果 檢視原始碼 程式碼
連結:執行結果 檢視原始碼 程式碼 wshNetwork=WScript.CreateObject("WScript.Network"); WScript.Echo("電腦名稱:" + wshNetwork.ComputerName); WScript.Echo("網域名稱:" + wshNetwork.UserDomain); WScript.Echo("使用者名稱:" + wshNetwork.UserName);

24 範例24-18 主題:顯示此機器的所有使用者 連結:執行結果 檢視原始碼 說明 如果使用者只有一個,通常是administrator。

25 24-5:網頁伺服器的管理 本小節將以範例說明使用 WSH 來管理微軟的網頁伺服器

26 範例24-19 主題:列出 IIS 網頁伺服器的性質 連結:執行結果 檢視原始碼 說明 可以修改性質來更改iis各種屬性。

27 範例24-20 主題:產生虛擬目錄 說明 連結: 執行結果 檢視原始碼
連結: 執行結果 檢視原始碼 說明 首先定義位址物件,“IIS://LocalHost/W3SVC/1/Root”表示於預設的 Web 站台的主目錄下建立虛擬目錄。 使用“Create("IISWebVirtualDir","虛擬目錄名稱")”方法,以建立虛擬目錄。 執行後產生的虛擬目錄是 winTemp,對應到實際硬碟的目錄是 c:\windows\temp。經由「控制台/系統管理工具/Internet Information Services」可以開啟 IIS 管理介面,以確認虛擬目錄 winTemp 的存在。

28 範例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 24-6:通用表示法的應用 本小節說明在 WSH 也可以使用通用表示法,此方式可以讓我們很快地在大量文字中間找到我們所要的資訊。

30 範例24-22 主題:找出一個網頁的標題 說明 連結:執行結果 檢視原始碼 此程式碼會重從 test.htm 找出此網頁的標題,印出結果如下
連結:執行結果 檢視原始碼 說明 此程式碼會重從 test.htm 找出此網頁的標題,印出結果如下 在上述範例中,title[1] 和 RegExp.$1 儲存相同的結果。 網頁標題 = 國立臺灣大學 資訊工程學系

31 範例24-23 主題:找出以JScript為主WSH 檔案的第一列註解 說明 連結:執行結果 檢視原始碼 程式碼重點 印出結果
連結:執行結果 檢視原始碼 程式碼重點 說明 印出結果 本範例前半段與上一範例相同 WScript.Echo("第一註解列 = " + title[1]); 第一註解列 = 抓出 WSH 程式碼(JScript)的第一註解列

32 範例24-24 主題:對範例目錄製作index.asp 的檔案 說明 Webpage: remote host, local host
採用6-2的方式,可以對範例目錄製作一個 index.asp 的檔案,即時地將每一個 js 檔案的第一列註解列印出來,形成一頁對 WSH 的所有 JScript 範例的列表和簡單說明

33 範例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 範例24-26 說明 主題:從一個檔案中,抽取連結文字與相關網址
連結:執行結果 檢視原始碼 說明 務必將程式碼 linkExtraction02.js 和網頁檔案 test.htm 放在同一個目錄。

35 24-7:網頁抓取與處理 本小節將說明如何使用 WSH 來直接抓取網頁

36 使用 InetCtls.Inet 若要使用 WSH 來直接抓取網頁,可以使用 Visual Basic 6 的元件 InetCtls.Inet 安裝方法如下 從下列網址下載壓縮檔案 msinet.cab: (近端備份:...\wsh\download\msinet.cab) 對 msinet.cab 進行解壓縮,得到 MSINET.INF 和 MSINET.OCX,將這兩個檔案放到 c:\windows\system32 目錄下。 開啟 DOS 視窗,進入 c:\windows\system32 目錄,執行「regsvr32 msinet.ocx」,即可完成安裝。

37 範例24-27 主題:使用 WSH 來直接抓取網頁 說明 連結:執行結果 檢視原始碼 程式碼 欲下載之網頁與設定的嘗試時間皆可依需求更改
連結:執行結果 檢視原始碼 程式碼 說明 欲下載之網頁與設定的嘗試時間皆可依需求更改 inet=new ActiveXObject("InetCtls.Inet"); // 取得 Inet Control 物件 inet.Url=" // 欲下載之網頁 inet.RequestTimeOut=60; // 設定嘗試時間 WScript.Echo("Downloading \""+inet.Url+"\"..."); content = inet.OpenURL(); // 下載網頁 WScript.Echo(content); // 顯示網頁內容

38 範例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 範例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 範例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 範例24-31 主題:使用WinHttpRequest物件抓取 Google首頁 說明 連結:執行結果 檢視原始碼
連結:執行結果 檢視原始碼 說明 可以暫停網路,再試看看此範例,就會印出抓不到網頁的錯誤訊息了 前面範例所用的 InetCtls.Inet 元件,比較簡單,所以無法偵測網路斷線的情況,而IIS內建的元件 WinHttp.WinHttpRequest,則有較多偵錯功能可以應付斷線的情況

42 24-8:與資料庫整合 本小節將介紹如何用 WSH 來對資料庫整合

43 範例24-31 主題:用 WSH 來對資料庫列表 說明 連結:執行結果 檢視原始碼 執行後,在 DOS 命令視窗印出結果如下
連結:執行結果 檢視原始碼 說明 執行後,在 DOS 命令視窗印出結果如下 原先以 JScript 進行資料庫列表的連結:listdb01.asp 欄位名稱: ssn account name team score 每一筆資料: 14 abc 葉佳慧 15 ABC 林政源 17 jtchen 陳江村 18 aBc 高名揚

44 範例24-32 主題:以wsh對資料庫進行新增 說明 連結:執行結果 檢視原始碼 程式碼重點
連結:執行結果 檢視原始碼 程式碼重點 說明 SQL 指令的 where 條件式是不分大小寫的,所以如果條件式是 name=‘abc’,抓出來的資料可能包含 ‘abc’、‘ABC’、‘aBc’ 等資料,若要解決此問題,請見下一個範例。 SQL="INSERT INTO testTable ([account], [name]) VALUES ('new1', 'new2')"; Conn.Execute(SQL);

45 範例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 範例24-34 主題:將 SQL 指令的結果記錄在檔案之中 說明 連結:執行結果 檢視原始碼
連結:執行結果 檢視原始碼 說明 此範例會將 testTable 資料表的內容儲存到 output.txt 。 sql2file() 函數的功能即是將 SQL 指令的結果記錄在檔案之中。

47 24-9 使用 wsInetTools.dll 本小節將使用幾個範例來說明此元件的功能

48 wsInetTools.dll的功能與下載
我們可以經由各種元件來加強 WSH 的功能 wsInetTools.dll是一個使用 C++ 開發的元件,主要有下列三項功能 抓取網頁 抓取二進制檔案(例如 mp3、midi 等檔案) 寄發電子郵件 可下載相關的 zip 檔案,解開以後,就可以看到 wsInetTools.dll 及相關的範例及說明。相關的說明,可見下載後的 index.htm

49 使用wsInetTools.dll 使用此元件之前,必須先將此元件登錄於系統之中,可以分成兩步驟:
將 wsInetTools.dll 拷貝到c:\windows\system32\ 之下。 點選「開始/執行」,然後輸入 「regsvr32 wsInetTools.dll」,按下「確定」,就完成了元件登錄的動作。 完成上述步驟後,就可以開始使用wsInetTools.dll

50 範例24-35 主題:直接抓取 HTML 網頁 說明 連結:執行結果 檢視原始碼 程式碼
連結:執行結果 檢視原始碼 程式碼 說明 此範例使用了wsInetTools.dll 抓取 HTML 檔案 web = new ActiveXObject("wsInetTools.HTTP"); // 取得 COM 物件 url = " // 欲下載之網頁 contents = web.GetWebPage(url); // 開始下載網頁 WScript.Echo("下載「"+url+"」成功!檔案內容如下:"); WScript.Echo(contents); // 顯示網頁內容

51 範例24-36 主題:抓取二進制檔案 說明 連結:執行結果 檢視原始碼 程式碼重點 二進制檔案,即例如 MIDI 或 MP3 檔案等。
連結:執行結果 檢視原始碼 程式碼重點 說明 二進制檔案,即例如 MIDI 或 MP3 檔案等。 remoteFile = “ JavaScript/example/music/tomorrow.mid”; // 遠端檔案 localFile = "tomorrow.mid"; // 本機檔案 web.GetBinary(remoteFile, localFile); // 開始下載 WScript.Echo("下載「"+remoteFile+"」成功!"); WScript.Echo("存成近端檔案:「"+localFile+"」!");

52 範例24-37 主題:寄發郵件 說明 連結:執行結果 檢視原始碼 程式碼重點 利用此元件,我們也可以在 ASP 的程式碼裡面寄送郵件
連結:執行結果 檢視原始碼 程式碼重點 說明 利用此元件,我們也可以在 ASP 的程式碼裡面寄送郵件 mail.MailServer = "wayne.cs.nthu.edu.tw"; // 設定郵件伺服器 from = // 發信人 to = // 收信人 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 24-10:傳送鍵盤事件 本小節說明如何使用 sendKeys() 函數來傳送鍵盤事件

54 範例24-38 主題:開啟 IE 並執行列印的動作 說明 連結:執行結果 檢視原始碼
連結:執行結果 檢視原始碼 說明 WshShell.SendKeys("%{f}") 代表執行 Alt-f 按鍵,WshShell.SendKeys("p") 代表執行按鍵 p,而 WshShell.SendKeys("{ENTER}") 代表執行按鍵 Enter,依此類推。 插進幾列 WScript.Sleep(1000),則在按鍵後,會先等候 1 秒鐘,此方法可使整個操作過程更加穩定

55 {BACKSPACE}, {BS}, or {BKSP}
特殊按鍵的相關呼叫方式(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 特殊按鍵的相關呼叫方式(2) 按鍵 呼叫方式 F1 {F1} F2 {F2} F3 {F3} F4 {F4} F5 {F5} F6 {F6}
HOME {HOME} INS or INSERT {INSERT} or {INS} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC} SCROLL LOCK {SCROLLLOCK}

57 範例24-39 主題:開啟記事本並寫入文字 說明 連結:執行結果 檢視原始碼
連結:執行結果 檢視原始碼 說明 使用 SendKeys 去開啟記事本並寫入文字、存檔於 junk.txt 在此範例中,我們可以將英文寫入記事本,但若要將中文送入,以目前的試驗來說,會出現亂碼。一個簡單的解決方案,就是先將中文送剪貼簿,再貼到記事本即可。

58 範例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(" WScript.Sleep(500); for (i=0; i<13; i++) WshShell.SendKeys("{TAB}"); WshShell.SendKeys("{ENTER}"); WScript.Sleep(500);

59 範例24-41 主題:利用記事本讀入一個文字檔,將文字檔的編碼方式改成 UTF-8,並另存新檔 說明 連結:執行結果 檢視原始碼
連結:執行結果 檢視原始碼 說明 利用 UTF-8 的編碼方式,就可以同時顯示各國不同的文字於同一個文字檔案。 如果輸入檔名是相對路徑,則在使用前,必需確認 notepad 的預設儲存目錄是正確的目錄 若要檢視這兩個檔案的不同,可用網頁瀏覽器來顯示這兩個檔案,並由下拉選單「檢視/編碼」,就可以看出這兩個檔案在編碼上的不同。

60 相關說明 其他傳送鍵盤事件相關說明,可見微軟官方網頁:


Download ppt "張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR實驗室 第24章 WSH 範例精選 張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR實驗室."

Similar presentations


Ads by Google