html用指定应用打开,用HTML应用启动CD(转)

本文介绍了如何使用HTA、AUTORUN.INF文件和商业启动器创建自动播放的CD,包括启动方法、AUTORUN.INF文件配置、任务执行如安装MSI和启动EXE,以及HTML应用实例。重点展示了如何利用脚本检查环境并执行定制任务。

”标记的必备功能,软件易用性的重要程度由此可见一斑。一、CD的启动方式支持CD“自动播放”的启动器有多种实现方法,除了HTA,至少还包括:▲编写一个简单的Visual Basic程序。采用这种方式的主要问题在于,目标系统上必须有VB运行库。虽然可以用临时安装VB运行库的办法解决,但这种方法看起来比较笨拙。▲直接启动CD上软件的主安装程序(下面我们称之为setup.exe)。如果不想提供帮助信息、产品说明以及检查目标环境是否符合要求,直接启动setup.exe也是一种选择。▲使用商业启动程序。有不少商业的(以及共享的)产品能够创建CD启动器。采用这种方式与自己编写HTA一样有许多优点,但采用商业产品要求你花时间了解该产品,同时还要有一定的投资。如果采用HTML应用,你可以方便地运用HTML、脚本代码构造用户界面,运用COM组件扩展HTA的功能。▲使用HTML文件。HTML文件不能读写注册表,而且它在启动主安装程序时会引起安全警告。对于要求不高的场合,软件安装过程完全可以由HTA应用独立完成,不再需要主安装程序。二、AUTORUN.INF文件要让CD具有自动播放功能,CD的根目录下必须有一个AUTORUN.INF文件,内容如下:[autorun]OPEN=ICON=资源管理器中显示的图标>如果不想显示图标,可以忽略ICON这一项。的自动播放功能不调用Win32 ShellExecute() API,因此在OPEN这一项中只能填.exe、.com或.bat文件。因为我们想用.hta文件,这是一个小麻烦。不过解决办法很简单,只需创建一个调用ShellExecute()的autorun.exe文件就可以了。autorun.exe是一个stub程序,它有一个命令行参数——要求运行的文件名字。例如,如果要求autorun.exe启动autorun.hta应用,在AUTORUN.INF文件中指定“OPEN=autorun.exe autorun.hta”即可。如果ShellExecute()函数返回错误,autorun.exe在资源管理器中打开CD根目录。下面就是AUTORUN.EXE的源代码,用VC ++ 6.0编译只有36K(可以使用其他任何的C编译器):#include <.h>

int WINAPI WinMain( HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine, int nCmdShow )

{

HINSTANCE result;

// 启动命令行指定的文件

result = ShellExecute(NULL, "open", lpCmdLine, NULL, NULL, SW_SHOWNORMAL);

// 检查结果

if ((int)result <= 32)

{

// 运行HTA文件出现错误,可能是由于

// 该机器上没有IE 5或更高版本

// 打开资源管理器,显示CD内容

ShellExecute(NULL, "explore", "", NULL, NULL, SW_SHOWNORMAL);

return 1;

}

else

{

// 启动成功

return 0;

}

}三、常见的任务除了显示用户界面、与用户交互以外,CD启动器可能需要执行的任务还包括:1、启动一个Installer的安装程序(MSI)。假设安装程序是setup.msi,用VBScript实现的代码如下:set msi = CreateObject( "Installer.Installer" )msi.InstallProduct("setup.msi")set msi = nothing2、启动一个EXE文件。参见本文后面的例子。3、读取注册表内容。有时候需要检查目标机器上是否已经安装了必要的支持软件,这可以通过检查注册表中是否有相应的ProgID来实现。以Access 2002为例,它的ProgID是Access.Application.10。下面是检查目标系统上是否已经有Access 2002的VBScript代码:On Error Resume Next

set wscript = CreateObject("WScript.Shell")

if IsNull(wscript.regRead ( "HKCRAccess.Application.10clsid" )) then

msAccessDetect.InnerText = "不能找到Access 2002。你需要安装Access 2000才能运行本软件。"

else

msAccessDetect.InnerText = "已找到Access 2002。"

end if

set wscript = Nothing如果用户禁止运行脚本(在浏览器选项中选择了禁用脚本选项),会出现什么样的情形呢?我试验了一下,什么异常也没有出现。看来HTML应用忽略了Internet安全设置,因为HTML应用被视为“本地”应用,不受Internet安全设置的限制。四、应用实例图一是一个CD启动器的实例。窗口布局用HTML代码实现。主要包括:用背景图片把整个窗口分成左右两大区域,左边上方是待安装的软件名称(“工资软件 Access版”),左边下方是一个广告。右边是主显示区域,显示内容由VBScript脚本更新。

200618102046473.jpg

图一HTML应用的编写方式与编写HTML页面很相似,但扩展名要改为.hta。HTML应用允许通过HTA:Application标记控制应用的行为,这个标记必须在之内,例如,下面的HTA:Application声明了HTML应用的名称,关闭了最大化、最小化按钮,关闭了浏览器的滚动条:

欢迎

MAXIMIZEBUTTON="no" MINIMIZEBUTTON="no"

SINGLEINSTANCE="yes" SCROLL="no" />

脚本的主要任务是检查安装环境是否符合要求并给出相应的提示,启动主安装程序(setup.exe)或执行安装任务(复制文件,访问注册表写入相关信息等),当setup.exe返回时报告安装结果。如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值