如何快速地从网页中获得Email地址
摘 要 WSH是一种基于32位Windows平台、应用于ActiveX脚本引擎、与编程语言无关的脚本宿主。本文通过几个实例介绍了如何在Delphi5.0中应用WSH技术。
关键词 Delphii WSH 脚本执行和辅助功能
1 引言
微软公司的WSH(Windows Scripting Host)是一种基于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的强大功能增强应用程序的性能,还可以简化应用程序设计,使编程工作更为简单。某些原本只能由Windows API函数完成的工作现在可以使用更为简单明了的WSH完成。WSH为用户提供了多个对象,例如:WshShortcut、 WshShell、 WshArguments、 WshUrlShortcut、 Automation、WshEnvironment等等。我们可以利用它们进行各种应用。
2 WSH应用实例
2.1 映射网络驱动器
在实际开发MIS系统时,我们曾经碰到这样一个问题:该系统由企业内部30个不同的部门使用,由于管理的需要,各部门的数据除了通过专用数据库接口提交到服务器以实现数据共享外,还须由系统自动将各部门数据以专门的HTML文件格式发送到指定的服务器目录下。服务器上对应设置了30个不同的共享目录。服务器上的共享目录分别映射为本地各部门的指定驱动器如W:)。显然,逐个部门进行手工映射比较繁琐。比较严重的情况是,如果用户由于误操作断开该映射,将导致应用系统无法运行。比较好的做法是在系统启动时自动映射网络驱动器,WSH为我们提供了非常简单的实现方法。下面是一个示例性程序:
procedure TForm1.FormCreate(Sender: TObject);
var
oWshNetwork:variant ;
begin
oWshNetwork:=CreateOleObject('Wscript.Network');
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方法创建快捷方式。当然,我们也可以指定该快捷方式的热键、目标路径、工作路径、窗口状态等等。下面是一个示例:
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辅助教学.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")