- 相關(guān)推薦
如何快速地從網(wǎng)頁中獲得Email地址
摘 要 WSH是一種基于32位Windows平臺、于ActiveX腳本引擎、與編程語言無關(guān)的腳本宿主。本文通過幾個(gè)實(shí)例介紹了如何在Delphi5.0中應(yīng)用WSH技術(shù)。關(guān)鍵詞 Delphii WSH 腳本執(zhí)行和輔助功能
1 引言
微軟公司的WSH(Windows Scripting Host)是一種基于32位Windows平臺、應(yīng)用于ActiveX腳本引擎、與編程語言無關(guān)的腳本宿主。WSH具有良好的腳本語言支持特性,它支持VBScript、javascript、Perl、REXX等各種腳本語言。WSH的運(yùn)行方式較為靈活,既可以在Windows中運(yùn)行,也可以在DOS命令模式下啟動。微軟已經(jīng)在Windows98、Windows2000中內(nèi)置了WSH技術(shù)。
WSH對象模型主要包含了兩類ActiveX接口:腳本執(zhí)行和輔助功能。每類接口提供多種WSH對象,各對象有自己的和屬性。腳本執(zhí)行接口提供了許多屬性和方法。這類接口允許腳本操作處理WSH,在屏幕上顯示特定信息,執(zhí)行一些基本功能(如創(chuàng)建Word應(yīng)用程序?qū)ο螅]o助功能接口也提供了豐富的屬性和方法供用戶使用。利用這些屬性和方法我們可以進(jìn)行各種操作,例如:映射驅(qū)動器、連接遠(yuǎn)程打印機(jī)、獲取編輯系統(tǒng)環(huán)境變量(如用戶名、機(jī)名、域名等等)、操作注冊表等。系統(tǒng)管理員可以利用這些輔助功能創(chuàng)建簡單的登錄腳本。程序編寫者可以利用這些由WSH提供的對象接口在基于Windows的平臺上執(zhí)行各種自動化任務(wù),例如:啟動Word、Excel、Powerpoint任務(wù),打開CAD文件等。
在Delphi5.0中應(yīng)用WSH技術(shù),不但可以利用WSH的強(qiáng)大功能增強(qiáng)應(yīng)用程序的性能,還可以簡化應(yīng)用程序設(shè)計(jì),使編程工作更為簡單。某些原本只能由Windows API函數(shù)完成的工作現(xiàn)在可以使用更為簡單明了的WSH完成。WSH為用戶提供了多個(gè)對象,例如:WshShortcut、 WshShell、 WshArguments、 WshUrlShortcut、 Automation、WshEnvironment等等。我們可以利用它們進(jìn)行各種應(yīng)用。
2 WSH應(yīng)用實(shí)例
2.1 映射網(wǎng)絡(luò)驅(qū)動器
在實(shí)際開發(fā)MIS系統(tǒng)時(shí),我們曾經(jīng)碰到這樣一個(gè):該系統(tǒng)由內(nèi)部30個(gè)不同的部門使用,由于管理的需要,各部門的數(shù)據(jù)除了通過專用數(shù)據(jù)庫接口提交到服務(wù)器以實(shí)現(xiàn)數(shù)據(jù)共享外,還須由系統(tǒng)自動將各部門數(shù)據(jù)以專門的HTML文件格式發(fā)送到指定的服務(wù)器目錄下。服務(wù)器上對應(yīng)設(shè)置了30個(gè)不同的共享目錄。服務(wù)器上的共享目錄分別映射為本地各部門的指定驅(qū)動器如W:)。顯然,逐個(gè)部門進(jìn)行手工映射比較繁瑣。比較嚴(yán)重的情況是,如果用戶由于誤操作斷開該映射,將導(dǎo)致應(yīng)用系統(tǒng)無法運(yùn)行。比較好的做法是在系統(tǒng)啟動時(shí)自動映射網(wǎng)絡(luò)驅(qū)動器,WSH為我們提供了非常簡單的實(shí)現(xiàn)方法。下面是一個(gè)示例性程序:
procedure TForm1.FormCreate(Sender: TObject);
var
oWshNetwork:variant ;
begin
oWshNetwork:=CreateOleObject('Wscript.Network');
oWshNetwork.MapNetworkDrive('w:','\\ezss\ydmis','True','administrator','xyz');
End;
程序首先創(chuàng)建基于WSH的OLE對象,然后映射服務(wù)器ezss上的共享目錄ydmis為W:。MapNetworkDrive方法的語法格式為:
MapNetworkDrive(strLocalName,strRemoteName,[bUpdateProfile],[strUser],[strPassword])
各參數(shù)含義簡要說明如下:
strLocalName 映射到本地的驅(qū)動器名稱。
strRemoteName 映射的遠(yuǎn)程共享名。
bUpdateProfile 如果本參數(shù)設(shè)置為TRUE,這種映射將存儲在用戶Windows系統(tǒng)的profiles文件夾下作為用戶配置保留。
strUser、strPassword 指定受托共享的用戶名和密碼。
若要斷開該映射,可以使用RemoveNetworkDrive方法,例如oWshNetwork.RemoveNetworkDrive('w:')。
2.2 創(chuàng)建應(yīng)用程序快捷方式圖標(biāo)
WSH可以幫助我們非常容易地創(chuàng)建應(yīng)用程序快捷方式圖標(biāo),這使得我們能夠自由地在安裝程序中選擇發(fā)布程序快捷圖標(biāo)的創(chuàng)建方式。至于應(yīng)用程序快捷方式圖標(biāo)放置在哪個(gè)地方,則完全由我們來決定。實(shí)際上,WSH允許我們自由地將應(yīng)用程序快捷方式圖標(biāo)放置在桌面、開始菜單、程序組、發(fā)送到、網(wǎng)上鄰居、我的文檔等各種地方。在WindowsNT中,還可以放置在所有用戶的啟動組、開始菜單或桌面上。實(shí)際操作時(shí),WSH首先利用WshSpecialFolders.Item("strFolderName")屬性返回指定文件夾(如桌面)的路徑,然后利用CreateShortcut方法創(chuàng)建快捷方式。當(dāng)然,我們也可以指定該快捷方式的熱鍵、目標(biāo)路徑、工作路徑、窗口狀態(tài)等等。下面是一個(gè)示例:
procedure TForm1.Button1Click(Sender: TObject);
var
oWshShell,strShortcut,oMyShortcut:variant ;
begin
oWshShell:=CreateoleObject('Wscript.Shell');
strShortcut:=oWshShell.SpecialFolders.Item('DeskTop');
oMyShortcut:=oWshShell.CreateShortcut(strShortcut+'\MIS輔助教學(xué).lnk');
oMyShortCut.Hotkey:='ALT+CTRL+C';
oMyShortcut.TargetPath:= 'd:\mis\mis.exe';
oMyShortCut.WorkingDirectory="d:\mis\"
oMyShortCut.WindowStyle=1
oMyShortCut.Save;
end;
上述程序代碼在桌面創(chuàng)建了一個(gè)“MIS輔助教學(xué)”應(yīng)用程序快捷方式圖標(biāo)。窗口狀態(tài)(WindowStyle)設(shè)置為普通,Save()方法用于保存該快捷方式圖標(biāo)。另外,我們可以根據(jù)需要將Item("strFolderName")中的strFolderName修改為AllUsersDesktop、AllUsersStartMenu、AllUsersPrograms、AllUsersStartup、Desktop、Favorites、Fonts、MyDocuments、NetHood、PrintHood、Programs、Recent、SendTo、StartMenu、Startup等串值,以便在不同的地方創(chuàng)建應(yīng)用程序快捷方式圖標(biāo)。
2.3 實(shí)現(xiàn)Word、Powerpoint、Excel自動
盡管Delphi5.0已經(jīng)提供了Office組件,也提供了這方面的應(yīng)用實(shí)例,但在處理一個(gè)已經(jīng)存在的Office文檔時(shí)仍然不夠方便。WSH可以靈活地處理Office文檔,這使得我們幾乎可以在應(yīng)用程序中無縫集成Office功能。在創(chuàng)建基于Office應(yīng)用程序的OLE對象后,編程人員可以利用Office錄制宏的功能,非常方便地獲得有關(guān)處理命令,減少了開發(fā)難度。這樣一來,在應(yīng)用程序中實(shí)現(xiàn)Word、Powerpoint、Excel自動化,就非常容易了。下面是一個(gè)處理Word文檔的簡單示例:
procedure TForm1.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()中的參數(shù)8,它用于標(biāo)識HTML文檔格式。如果不使用該參數(shù),保存為Web頁后可能全是亂碼。
2.4 操作注冊表
Delphi5.0已經(jīng)提供了操作注冊表的方法(使用TRegistry.Create),但使用WSH的處理方法更為簡單明了。WSH通過RegRead、RegDelete、RegWrite方法,可以對注冊表的5個(gè)分支部分,即HKEY_CURRENT_USER(HKCU)、HKEY_LOCAL_MACHINE(HKLM)、HKEY_CLASSES_ROOT(HKCR)、HKEY_USERS 、HKEY_CURRENT_CONFIG ,進(jìn)行操作。注意,括號內(nèi)為縮寫形式,實(shí)際應(yīng)用時(shí),我們既可以使用全稱,也可以使用縮寫。下面來看一個(gè)示例程序:
procedure TForm1.Button1Click(Sender: TObject);
var
oWshReg:variant ;
begin
oWshReg:=CreateOleObject('Wscript.Shell');
oWshReg.RegWrite('HKCU\WSHSample\Value',10,'REG_BINARY');
end;
上述代碼在注冊表的HKEY_CURRENT_USER分支下創(chuàng)建主鍵WSHSample,并在該主鍵下創(chuàng)建二進(jìn)制值Value,其數(shù)值為10。RegWrite方法的語法格式為:RegWrite(strName,anyValue,[strType])。其中,strType參數(shù)用于指定鍵值的數(shù)據(jù)類型,可以是REG_DWORD、REG_BINARY、REG_SZ等等。
3 結(jié)束語
總的看來,WSH使程序代碼容易編寫、易于閱讀,還可以實(shí)現(xiàn)一些特殊功能。在使用Delphi5.0開發(fā)應(yīng)用系統(tǒng)時(shí),我們可以適當(dāng)使用WSH技術(shù)。
1 Charlie Calvert,Delphi4編程技術(shù)內(nèi)幕,機(jī)械出版社,1999
2 Micros
oft Corporation,動態(tài)HTML參考和開發(fā)大全,人民郵電出版社,2000.3
【如何快速地從網(wǎng)頁中獲得Email地址】相關(guān)文章:
如何快速彌補(bǔ)海外華僑中文學(xué)習(xí)者短板論文04-20
留學(xué)論文寫作中該如何避免歧義06-22
如何突破初中物理電學(xué)中的重難點(diǎn)03-03
如何在語文教學(xué)中培養(yǎng)學(xué)生的能力04-22
初中英語教學(xué)中如何轉(zhuǎn)化“學(xué)困生”05-25
淺探英語教學(xué)中如何激發(fā)學(xué)生興趣06-09
自制快速干手器05-11
網(wǎng)購快速發(fā)展的隱憂05-14