圆月山庄资源网 Design By www.vgjia.com
如何从 HTA 中启动应用程序?
问:
您好,脚本专家!对于 HTA,有没有什么可以替代 Wscript.Shell 命令?我需要运行某个应用程序并指定要打开的文件。
-- DL
答:
您好,DL。是的,我们确实知道这样的命令,可以在 HTA 中使用并可以替代 Wscript.Shell 命令,我们一会儿就会向您介绍。不过,在介绍它之前,我们应注意到您实际上可以在 HTA 中使用 Wscript.Shell 对象。这是一个常会引发混淆之处:因为您在 HTA 中无法使用某些命令(如 Wscript.Echo 和 Wscript.Sleep),人们就认为您在 HTA 中无法使用任何 WSH 命令。
继续之前,还有一个问题:为什么您在 HTA 中无法使用 Wscript.Echo 和 Wscript.Sleep 呢?是这样,这些方法是 Wscript 对象的属性,而您是无法创建 Wscript 对象实例。Wscript 对象是自动创建的,而且只有在您运行 Windows Script Host(即 Wscript.exe 或 Cscript.exe)时才会创建。正因为这一点,才可以说以下脚本绝对有效:
复制代码 代码如下:
Wscript.Echo "Hey."
请注意,我们没有创建 Wscript 对象,该对象是在我们调用 Windows Script Host 时自动创建的。
但这只限于 Wscript 对象。还有其他您可以创建的 WSH 对象,包括 Shell 对象。例如,下面是一个简单的小 HTA,它创建 Wscript.Shell 对象,然后运行 Notepad.exe(并在此过程中打开文件 C:\Scripts\Test.txt):
复制代码 代码如下:
<html>
<head>
<script language="VBScript">
Sub RunProgram
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "notepad.exe c:\scripts\test.txt"
End Sub
</script>
</head>
<body>
<button onclick="RunProgram">Run Program</button> <p>
</body>
</html>
如您可以看到的,这差不多是您能获得的最简单的 HTA:它只由一个按钮组成,单击时会运行名为 RunProgram 的子例程。请看一下 RunProgram 的代码:
复制代码 代码如下:
Sub RunProgram
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "notepad.exe c:\scripts\test.txt"
End Sub
就是这样:我们创建 Wscript.Shell 对象的一个实例,然后调用 Run 方法。这样就为 Run 传递了单一参数:可执行文件名 (notepad.exe) 后跟想要打开的文件的路径。这就是我们需要做的一切。
顺便说一句,只要是在 HTA 中运行该脚本,则不会有任何问题。如果尝试在 HTML 文件(即文件扩展名为 .htm 的文件)中运行它,则会显示一个消息框,警告您有一个 ActiveX 控件正在尝试于页面上运行。此时必须单击是以允许该子例程创建 Shell 对象,并随后运行它。这是因为 WSH 对象被认为“对脚本编写是不安全的”。
注意:是啊,这听起来有点怪,竟然认为脚本编写对象对脚本编写是不安全的。但这是因为 Internet Explorer 使用与 WSH 不同的脚本宿主和不同的安全模型。幸好 HTA 使用与 Internet Explorer 不同的安全模型,这意味着您在 HTA 内创建 Shell 对象时不会遇到此问题。
那么,如果是使用那个替代命令呢?嗯,如果出于某种原因您不想使用 Wscript.Shell 对象,则可以改为使用 Windows Shell 对象。下面的 HTA 也可以启动记事本并打开文件 C:\Scripts\Test.txt:
复制代码 代码如下:
<html>
<head>
<script language="VBScript">
Sub RunProgram
Const NORMAL_WINDOW = 1
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "notepad.exe", "c:\scripts\test.txt", , , NORMAL_WINDOW
End Sub
</script>
</head>
<body>
<button onclick="RunProgram">Run Program</button> <p>
</body>
</html>
坦白地讲,我们认为使用 Windows Shell 对象与使用 Wscript.Shell 对象相比并没有什么真正的优势:这两个对象的功能基本上一样。不过,如果您想要摆弄一下 Windows Shell,请查阅有关 ShellExecute 方法的文档。重要的是这一点:如果想要从 HTA 启动应用程序,两种方法都可以使用。
问:
您好,脚本专家!对于 HTA,有没有什么可以替代 Wscript.Shell 命令?我需要运行某个应用程序并指定要打开的文件。
-- DL
答:
您好,DL。是的,我们确实知道这样的命令,可以在 HTA 中使用并可以替代 Wscript.Shell 命令,我们一会儿就会向您介绍。不过,在介绍它之前,我们应注意到您实际上可以在 HTA 中使用 Wscript.Shell 对象。这是一个常会引发混淆之处:因为您在 HTA 中无法使用某些命令(如 Wscript.Echo 和 Wscript.Sleep),人们就认为您在 HTA 中无法使用任何 WSH 命令。
继续之前,还有一个问题:为什么您在 HTA 中无法使用 Wscript.Echo 和 Wscript.Sleep 呢?是这样,这些方法是 Wscript 对象的属性,而您是无法创建 Wscript 对象实例。Wscript 对象是自动创建的,而且只有在您运行 Windows Script Host(即 Wscript.exe 或 Cscript.exe)时才会创建。正因为这一点,才可以说以下脚本绝对有效:
复制代码 代码如下:
Wscript.Echo "Hey."
请注意,我们没有创建 Wscript 对象,该对象是在我们调用 Windows Script Host 时自动创建的。
但这只限于 Wscript 对象。还有其他您可以创建的 WSH 对象,包括 Shell 对象。例如,下面是一个简单的小 HTA,它创建 Wscript.Shell 对象,然后运行 Notepad.exe(并在此过程中打开文件 C:\Scripts\Test.txt):
复制代码 代码如下:
<html>
<head>
<script language="VBScript">
Sub RunProgram
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "notepad.exe c:\scripts\test.txt"
End Sub
</script>
</head>
<body>
<button onclick="RunProgram">Run Program</button> <p>
</body>
</html>
如您可以看到的,这差不多是您能获得的最简单的 HTA:它只由一个按钮组成,单击时会运行名为 RunProgram 的子例程。请看一下 RunProgram 的代码:
复制代码 代码如下:
Sub RunProgram
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "notepad.exe c:\scripts\test.txt"
End Sub
就是这样:我们创建 Wscript.Shell 对象的一个实例,然后调用 Run 方法。这样就为 Run 传递了单一参数:可执行文件名 (notepad.exe) 后跟想要打开的文件的路径。这就是我们需要做的一切。
顺便说一句,只要是在 HTA 中运行该脚本,则不会有任何问题。如果尝试在 HTML 文件(即文件扩展名为 .htm 的文件)中运行它,则会显示一个消息框,警告您有一个 ActiveX 控件正在尝试于页面上运行。此时必须单击是以允许该子例程创建 Shell 对象,并随后运行它。这是因为 WSH 对象被认为“对脚本编写是不安全的”。
注意:是啊,这听起来有点怪,竟然认为脚本编写对象对脚本编写是不安全的。但这是因为 Internet Explorer 使用与 WSH 不同的脚本宿主和不同的安全模型。幸好 HTA 使用与 Internet Explorer 不同的安全模型,这意味着您在 HTA 内创建 Shell 对象时不会遇到此问题。
那么,如果是使用那个替代命令呢?嗯,如果出于某种原因您不想使用 Wscript.Shell 对象,则可以改为使用 Windows Shell 对象。下面的 HTA 也可以启动记事本并打开文件 C:\Scripts\Test.txt:
复制代码 代码如下:
<html>
<head>
<script language="VBScript">
Sub RunProgram
Const NORMAL_WINDOW = 1
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "notepad.exe", "c:\scripts\test.txt", , , NORMAL_WINDOW
End Sub
</script>
</head>
<body>
<button onclick="RunProgram">Run Program</button> <p>
</body>
</html>
坦白地讲,我们认为使用 Windows Shell 对象与使用 Wscript.Shell 对象相比并没有什么真正的优势:这两个对象的功能基本上一样。不过,如果您想要摆弄一下 Windows Shell,请查阅有关 ShellExecute 方法的文档。重要的是这一点:如果想要从 HTA 启动应用程序,两种方法都可以使用。
标签:
HTA,启动应用程序
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
更新日志
2024年11月01日
2024年11月01日
- 群星《狐妖小红娘月红篇 电视剧原声带》[320K/MP3][233.61MB]
- 英雄联盟s14四强淘汰赛规则是什么 全球总决赛四强淘汰赛规则详解
- 英雄联盟s14四强赛怎么分组 S14全球总决赛四强赛分组规则详解
- 英雄联盟s14四强赛抽签规则是什么 S14全球总决赛四强抽签规则详解
- ButterQuartet-ScintillaEarlyItalianStringQuartets(DeLuxe)(2024)[24Bit-WAV]
- 草原最美情歌《迷醉女中音》2CD/DTS-ES[WAV]
- 爵士女伶何芸妮《靡靡之音》(香港版)[WAVCUE]
- 游戏中辱骂他人同样侵犯名誉权 一玩家被判道歉
- 老游戏远程共享申请失败 美国版权局拒绝豁免请愿
- 通过本地化支付解决方案,解锁150亿美元拉美和非洲游戏市场
- 群星《狐妖小红娘月红篇 电视剧原声带》[FLAC/分轨][574.68MB]
- 群星《红色冲浪板 电影配乐专辑》[320K/MP3][106.63MB]
- 罗艺恒《What Could've Been》[320K/MP3][50.62MB]
- 于台烟.1989-人间山水【银河唱片】【WAV+CUE】
- 杨克强.1992-特制的面具【恩华声视】【WAV+CUE】