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

Slides:



Advertisements
Similar presentations
市民三小時免費上網線上教學 入門班.
Advertisements

第3章 指法训练和汉字输入 学习目标 键盘和指法 智能ABC输入法简介 五笔字型汉字输入法.
Chapter 5 全球資訊網 5-1 World Wide Web 的誕生 5-2 使用Internet Explorer
学习目标: 1.了解键盘键位及功能 2.能以正确的坐姿和规范的指法录入中英文
提高打字技能 —— 键盘规范操作.
第一课 计算机基础知识.
第三章 汉字输入技术 快速输入汉字是学好电脑的基本条件,而且现在有许多输入法供你选择,所以通过这一章的学习,你要了解汉字输入技术的原理,选择一种你喜欢的输入法,并通过练习达到快速输入汉字的目的。
題目:十六對一多工器 姓名:李國豪 學號:B
第貳部份 Word文書處理系統 Word文書處理系統可用來製作一般文字型檔案,搭配格式化版面,也可用來製作像套版式之公文表格。 聯合.盧坤勇.
Windows 2003 Server FTP站台的架設
臺北市立大學 資訊科學系(含碩士班) 賴阿福
Q101 在701 SDX Linux上的標準安裝與使用程序v2
JDK 安裝教學 (for Win7) Soochow University
第1章 認識Arduino.
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
Working with Databases (II) 靜宜大學資管系 楊子青
第22章 WSH (Window Script Host) 基本介紹
R教學 安裝RStudio 羅琪老師.
安裝JDK 安裝Eclipse Eclipse 中文化
自由軟體介紹(一) 把flash通通帶回家 報告人:陳俊銘.
網頁切換移轉 JS vs. ASP.NET.
Word與PowerPoint的結合 建功國小 陳旻杰 健行國小 張慧如.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
連結資料庫管理系統.
App Inventor2呼叫PHP存取MySQL
硬體話機設定說明.
雲端運算的基石(2) 虛擬化技術實作(XP篇─上)
檔案與磁碟的基本介紹.
系統設定 IE8相容性檢視
雲端計算.
FTP檔案上傳下載 實務與運用.
網頁切換移轉 JS vs. ASP.NET.
MS Windows XP 作業系統使用操作簡介.
電腦攻擊與防禦 使用電腦教室VMware軟體說明.
Web Component: Accessing the Web and CSV 靜宜大學資管系 楊子青
虛擬機器 下載QEMU Windows版 (0.9.1) 下載Kqemu Windows版 安裝QEMU 安裝Kqumu
VS.NET 2003 IDE.
精明使用互聯網教育計劃 K9下載及安裝教學篇.
Pocket Access.
第一個cordova project Cordova project建立與平台設定,均藉由cli(command line interface來完成 建立project請打開命令提示字元視窗應輸入下列命令 cordova create hello tw.edu.stust.mis.hello HelloWorld.
HTML – 超連結與圖片 資訊教育.
1-1 鍵盤的組成與功能 1-2 中文輸入法簡介 1-3 輸入法的設定與使用
如何利用範本來製作網頁.
期末考.
個人網路空間 資訊教育.
GridView.
GridView操作 (II).
信息技术试卷评价交流 南京市第五十中 蔡晓红.
如何使用Gene Ontology 網址:
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
eol ─ 日本全上市公司資訊資料庫 財務資料下載之.csv檔於中文環境下的閱讀方法
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
挑戰C++程式語言 ──第7章 輸入與輸出.
MiRanda Java Interface v1.0的使用方法
函數應用(二)與自定函數.
編輯網頁可用那些應用程式? 記事本 Word FrontPage Dreamweaver.
基本指令.
1. 查詢個人電腦版本 1.進入控制台 2.點選“所有控制台項目” 3.點選“系統”.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
Brief Guide of FrontPage
國立台灣大學 關懷弱勢族群電腦課程 By 資訊工程 黃振修
安裝JDK 配置windows win7 環境變數
張智星 台大資工系 多媒體檢索實驗室 第十三章 函數與程式碼的重複使用 張智星 台大資工系 多媒體檢索實驗室.
開發Java程式語言的工具 JDK.
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
張智星 台大資工系 MIR實驗室 第23章 程式碼的重複使用 張智星 台大資工系 MIR實驗室.
Unix指令4-文字編輯與程式撰寫.
Develop and Build Drives by Visual C++ IDE
雲端電腦教室 Matlab 使用介紹 1. 工作目錄切換 2. 把 matlab 的檔案存出來 3. Matlab 軟體介面.
Presentation transcript:

張智星 jang@mirlab.org http://mirlab.org/jang 台大資工系 MIR實驗室 第24章 WSH 範例精選 張智星 jang@mirlab.org 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 24-10:傳送鍵盤事件

24-1:桌面處理 本小節將說明如何使用 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();

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

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

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

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

24-2:檔案處理 本小節將以範例說明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);

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

範例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. }

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

24-3:目錄與磁碟機處理 本小節將以範例說明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.");

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

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

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

24-4:電腦系統管理 本小節將以範例說明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 = x86 temp = %SystemRoot%\TEMP

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

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

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

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

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

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

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

範例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 伺服器!");

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

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

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

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

範例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

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

24-7:網頁抓取與處理 本小節將說明如何使用 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」,即可完成安裝。

範例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); // 顯示網頁內容

範例24-28 說明 主題:使用通用運算式,便可以在抓取網頁後,顯示此網頁的標題 最後一行的功能為顯示結果 連結:執行結果 檢視原始碼 連結:執行結果 檢視原始碼 程式碼重點 說明 最後一行的功能為顯示結果 WScript.Echo("Downloading \""+inet.Url+"\"..."); content = inet.OpenURL(); // 下載網頁 pattern = /<title>(.*)<\/title>/i; // 定義通用表示式 title = pattern.exec(content); // 抓出標題 WScript.Echo("位於「"+inet.Url+"」的網頁的標題是「"+RegExp.$1+"」!");

範例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+"」!");

範例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); } // 抓出連結的網址以及連結的文字

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

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

範例24-31 主題:用 WSH 來對資料庫列表 說明 連結:執行結果 檢視原始碼 執行後,在 DOS 命令視窗印出結果如下 連結:執行結果 檢視原始碼 說明 執行後,在 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

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

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

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

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

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

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

範例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); // 顯示網頁內容

範例24-36 主題:抓取二進制檔案 說明 連結:執行結果 檢視原始碼 程式碼重點 二進制檔案,即例如 MIDI 或 MP3 檔案等。 連結:執行結果 檢視原始碼 程式碼重點 說明 二進制檔案,即例如 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+"」!");

範例24-37 主題:寄發郵件 說明 連結:執行結果 檢視原始碼 程式碼重點 利用此元件,我們也可以在 ASP 的程式碼裡面寄送郵件 連結:執行結果 檢視原始碼 程式碼重點 說明 利用此元件,我們也可以在 ASP 的程式碼裡面寄送郵件 mail.MailServer = "wayne.cs.nthu.edu.tw"; // 設定郵件伺服器 from = "jang@wayne.cs.nthu.edu.tw"; // 發信人 to = "jang@cs.nthu.edu.tw"; // 收信人 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("寄送郵件成功!");

24-10:傳送鍵盤事件 本小節說明如何使用 sendKeys() 函數來傳送鍵盤事件

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

{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}

特殊按鍵的相關呼叫方式(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}

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

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

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

相關說明 其他傳送鍵盤事件相關說明,可見微軟官方網頁:http://www.microsoft.com/technet/scriptcenter/guide/sas_wsh_hilv.mspx?mfr=true