計算機畢業論文:Delphi5.0中應用WSH技術

時間:2022-10-08 03:55:00

導語:計算機畢業論文:Delphi5.0中應用WSH技術一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

計算機畢業論文:Delphi5.0中應用WSH技術

摘要WSH是一種基于32位Windows平臺、應用于ActiveX腳本引擎、與編程語言無關的腳本宿主。本文通過幾個實例介紹了如何在delphi5.0應用wsh技術

關鍵詞DelphiiWSH腳本執行和輔助功能

1引言

微軟公司的WSH(WindowsScriptingHost)是一種基于32位Windows平臺、應用于ActiveX腳本引擎、與編程語言無關的腳本宿主。WSH具有良好的腳本語言支持特性,它支持VBScript、javascript、Perl、REXX等各種腳本語言。WSH的運行方式較為靈活,既可以在Windows中運行,也可以在DOS命令模式下啟動。微軟已經在Windows98、Windows2000中內置了WSH技術。

WSH對象模型主要包含了兩類ActiveX接口:腳本執行和輔助功能。每類接口提供多種WSH對象,各對象有自己的方法和屬性。腳本執行接口提供了許多屬性和方法。這類接口允許腳本操作處理WSH,在屏幕上顯示特定信息,執行一些基本功能(如創建Word應用程序對象)。輔助功能接口也提供了豐富的屬性和方法供用戶使用。利用這些屬性和方法我們可以進行各種操作,例如:映射網絡驅動器、連接遠程打印機、獲取編輯系統環境變量(如用戶名、計算機名、域名等等)、操作注冊表等。系統管理員可以利用這些輔助功能創建簡單的登錄腳本。程序編寫者可以利用這些由WSH提供的對象接口在基于Windows的平臺上執行各種自動化任務,例如:啟動Word、Excel、Powerpoint任務,打開CAD文件等。

在Delphi5.0中應用WSH技術,不但可以利用WSH的強大功能增強應用程序的性能,還可以簡化應用程序設計,使編程工作更為簡單。某些原本只能由WindowsAPI函數完成的工作現在可以使用更為簡單明了的WSH完成。WSH為用戶提供了多個對象,例如:WshShortcut、WshShell、WshArguments、WshUrlShortcut、Automation、WshEnvironment等等。我們可以利用它們進行各種應用。

2WSH應用實例

2.1映射網絡驅動器

在實際開發MIS系統時,我們曾經碰到這樣一個問題:該系統由企業內部30個不同的部門使用,由于管理的需要,各部門的數據除了通過專用數據庫接口提交到服務器以實現數據共享外,還須由系統自動將各部門數據以專門的HTML文件格式發送到指定的服務器目錄下。服務器上對應設置了30個不同的共享目錄。服務器上的共享目錄分別映射為本地各部門的指定驅動器如W:)。顯然,逐個部門進行手工映射比較繁瑣。比較嚴重的情況是,如果用戶由于誤操作斷開該映射,將導致應用系統無法運行。比較好的做法是在系統啟動時自動映射網絡驅動器,WSH為我們提供了非常簡單的實現方法。下面是一個示例性程序:

procedureTForm1.FormCreate(Sender:TObject);

var

oWshNetwork:variant;

begin

oWshNetwork:=CreateOleObject(''''work'''');

oWshNetwork.MapNetworkDrive(''''w:'''',''''\\ezss\ydmis'''',''''True'''',''''administrator'''',''''xyz'''');

End;

程序首先創建基于WSH的OLE對象,然后映射服務器ezss上的共享目錄ydmis為W:。MapNetworkDrive方法的語法格式為:

MapNetworkDrive(strLocalName,strRemoteName,[bUpdateProfile],[strUser],[strPassword])

各參數含義簡要說明如下:

strLocalName映射到本地的驅動器名稱。

strRemoteName映射的遠程共享名。

bUpdateProfile如果本參數設置為TRUE,這種映射將存儲在用戶Windows系統的profiles文件夾下作為用戶配置保留。

strUser、strPassword指定受托共享的用戶名和密碼。

若要斷開該映射,可以使用RemoveNetworkDrive方法,例如oWshNetwork.RemoveNetworkDrive(''''w:'''')。

2.2創建應用程序快捷方式圖標

WSH可以幫助我們非常容易地創建應用程序快捷方式圖標,這使得我們能夠自由地在安裝程序中選擇程序快捷圖標的創建方式。至于應用程序快捷方式圖標放置在哪個地方,則完全由我們來決定。實際上,WSH允許我們自由地將應用程序快捷方式圖標放置在桌面、開始菜單、程序組、發送到、網上鄰居、我的文檔等各種地方。在WindowsNT中,還可以放置在所有用戶的啟動組、開始菜單或桌面上。實際操作時,WSH首先利用WshSpecialFolders.Item("strFolderName")屬性返回指定文件夾(如桌面)的路徑,然后利用CreateShortcut方法創建快捷方式。當然,我們也可以指定該快捷方式的熱鍵、目標路徑、工作路徑、窗口狀態等等。下面是一個示例:

procedureTForm1.Button1Click(Sender:TObject);

var

oWshShell,strShortcut,oMyShortcut:variant;

begin

oWshShell:=CreateoleObject(''''Wscript.Shell'''');

strShortcut:=oWshShell.SpecialFolders.Item(''''DeskTop'''');

oMyShortcut:=oWshShell.CreateShortcut(strShortcut+''''\MIS輔助教學.lnk'''');

oMyShortCut.Hotkey:=''''ALT+CTRL+C'''';

oMyShortcut.TargetPath:=''''d:\mis\mis.exe'''';

oMyShortCut.WorkingDirectory="d:\mis\"

oMyShortCut.WindowStyle=1

oMyShortCut.Save;

end;

上述程序代碼在桌面創建了一個“MIS輔助教學”應用程序快捷方式圖標。窗口狀態(WindowStyle)設置為普通,Save()方法用于保存該快捷方式圖標。另外,我們可以根據需要將Item("strFolderName")中的strFolderName修改為AllUsersDesktop、AllUsersStartMenu、AllUsersPrograms、AllUsersStartup、Desktop、Favorites、Fonts、MyDocuments、NetHood、PrintHood、Programs、Recent、SendTo、StartMenu、Startup等串值,以便在不同的地方創建應用程序快捷方式圖標。

2.3實現Word、Powerpoint、Excel自動化盡管Delphi5.0已經提供了Office組件,也提供了這方面的應用實例,但在處理一個已經存在的Office文檔時仍然不夠方便。WSH可以靈活地處理Office文檔,這使得我們幾乎可以在應用程序中無縫集成Office功能。在創建基于Office應用程序的OLE對象后,編程人員可以利用Office錄制宏的功能,非常方便地獲得有關處理命令,減少了開發難度。這樣一來,在應用程序中實現Word、Powerpoint、Excel自動化,就非常容易了。下面是一個處理Word文檔的簡單示例:

procedureTForm1.Button1Click(Sender:TObject);

var

oWord:variant;

begin

OWord:=createoleobject(''''word.application'''');

oWord.visible:=false;

oWord.documents.open(''''d:\scgl\mr_10.doc'''');

oWord.documents.item(1).saveas(''''d:\scgl\htms\mr_10.html'''',8);

oWord.quit;

end;

上述代碼的主要作用是將mr_10.doc文件另存為Web頁,適用于Word97、Word2000。請注意saveas()中的參數8,它用于標識HTML文檔格式。如果不使用該參數,保存為Web頁后可能全是亂碼。

2.4操作注冊表

Delphi5.0已經提供了操作注冊表的方法(使用TRegistry.Create),但使用WSH的處理方法更為簡單明了。WSH通過RegRead、RegDelete、RegWrite方法,可以對注冊表的5個分支部分,即HKEY_CURRENT_USER(HKCU)、HKEY_LOCAL_MACHINE(HKLM)、HKEY_CLASSES_ROOT(HKCR)、HKEY_USERS、HKEY_CURRENT_CONFIG,進行操作。注意,括號內為縮寫形式,實際應用時,我們既可以使用全稱,也可以使用縮寫。下面來看一個示例程序:

procedureTForm1.Button1Click(Sender:TObject);

var

oWshReg:variant;

begin

oWshReg:=CreateOleObject(''''Wscript.Shell'''');

oWshReg.RegWrite(''''HKCU\WSHSample\Value'''',10,''''REG_BINARY'''');

end;

上述代碼在注冊表的HKEY_CURRENT_USER分支下創建主鍵WSHSample,并在該主鍵下創建二進制值Value,其數值為10。RegWrite方法的語法格式為:RegWrite(strName,anyValue,[strType])。其中,strType參數用于指定鍵值的數據類型,可以是REG_DWORD、REG_BINARY、REG_SZ等等。

3結束語

總的看來,WSH使程序代碼容易編寫、易于閱讀,還可以實現一些特殊功能。在使用Delphi5.0開發應用系統時,我們可以適當使用WSH技術。

參考文獻

1CharlieCalvert,Delphi4編程技術內幕,機械工業出版社,1999

2Micros

oftCorporation,動態HTML參考和開發應用大全,人民郵電出版社,2000.3