从 HTA 中启动应用程序

作者: sterben 发布: 2021年11月25日  24阅读  0评论

如何从 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 οnclick="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 οnclick="RunProgram">Run Program</button> <p>

</body>

</html>

坦白地讲,我们认为使用 Windows Shell 对象与使用 Wscript.Shell 对象相比并没有什么真正的优势:这两个对象的功能基本上一样。不过,如果您想要摆弄一下 Windows Shell,请查阅有关 ShellExecute 方法的文档。重要的是这一点:如果想要从 HTA 启动应用程序,两种方法都可以使用。

从 HTA 中启动应用程序相关推荐

  1. c语言wscript.echo用法,WScript.Shell和一种替换方法(如何从 HTA 中启动应用程序?)...

    您好,DL.是的,我们确实知道这样的命令,可以在 HTA 中使用并可以替代 Wscript.Shell 命令,我们一会儿就会向您介绍.不过,在介绍它之前,我们应注意到您实际上可以在 HTA 中使用 W ...

  2. 计算机启动应用程序的方法,excel的程序_Excel2010中启动应用程序的三种方法

    使用Excel时,需要先启动应用程序,怎么去进行操作启动它?今天,学习啦小编就教大家在Excel2010中启动应用程序的三种方法. Excel2010中启动应用程序的三种步骤如下: 1.开始菜单 在桌 ...

  3. 程序代码初学者_初学者:如何使用热键在Windows中启动任何程序

    程序代码初学者 Assigning shortcut keys to launch programs in Windows is probably one of the oldest geek tri ...

  4. android 在窗口中启动应用程序,Android中使用am命令实现在命令行启动程序详解

    在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am. usage: am [subcommand] [options] start an Activity: ...

  5. 程序开源与不开源区别_如何在公司中启动开源程序

    程序开源与不开源区别 许多互联网规模的公司,包括Google,Facebook和Twitter,都建立了正式的开源程序(有时也称为开源程序办公室,简称OSPO),这是公司内部支持开源消费和生产的指定场 ...

  6. windows命令行中 启动应用程序

    目的: 效果 方法 1. 创建批处理脚本 2. 设定环境变量 3. 测试功能 4. 扩展功能 目的: 在windows的命令行界面中,输入简单的几个字符就可以启动相应的应用程序. 例如: 输入mail ...

  7. 无法启动此程序,因为计算机中丢失 MSVCP120.dll。尝试安装该程序以解决此问题

    无法启动此程序,因为计算机中丢失 MSVCP120.dll.尝试安装该程序以解决此问题 参考文章: (1)无法启动此程序,因为计算机中丢失 MSVCP120.dll.尝试安装该程序以解决此问题 (2) ...

  8. PB程序“无法启动此程序,因为计算机中丢失PBvm90.dll。尝试重新安装该程序以解决此问题”的解决方法

    PB程序"无法启动此程序,因为计算机中丢失PBvm90.dll.尝试重新安装该程序以解决此问题"的解决方法 参考文章: (1)PB程序"无法启动此程序,因为计算机中丢失P ...

  9. 电脑安装python为什么显示的是程序丢失-python报错:无法启动此程序,因为计算机中丢失...

    原标题:python报错:无法启动此程序,因为计算机中丢失 python报错:无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-|1-1-0.dll api-ms-win- ...

最新文章

  1. mysql 事务补偿_TCC补偿性策略_彻底学习数据库事务 seata分布式事务 共享 排它锁 死锁 索引 Spring事务 隔离级别等_MySQL视频-51CTO学院...
  2. vue-cli3 中跨域解决方案
  3. myeclipse导出doc
  4. 使用Bean验证扩展PrimeFaces CSV
  5. Ubuntu18.04.4 环境下对属性加密算法CP-ABE环境搭建
  6. 浅析调用android的content provider(一)
  7. Gartner最新报告:阿里云计算、存储、网络、安全均获得最高分
  8. python数据符号函数等一切皆对象_第一章:Python高级编程-Python一切皆对象
  9. C语言电话薄登录系统,求助 哈稀表编电话薄程序(c语言) 算法
  10. Python文学家为Python写的一首词?(附中英文版)
  11. Android View框架总结(二)View焦点
  12. BT.1120协议简介
  13. 掌握这60个Excel小技巧
  14. Unexpected console statement
  15. CSS3实现动画效果
  16. 项目管理的十大经典法则
  17. Lua封装增加九宫Sprite接口
  18. 【题解】洛谷P6006 [USACO20JAN]Farmer John Solves 3SUM G
  19. java 9宫格抽奖_九宫格抽奖HTML+JS版
  20. php7不支持random函数生成随机字符串

热门文章

  1. WebKit – WebKit For Android
  2. web前端工程师不同级别分别掌握哪些技能
  3. 阅读笔记:骑驴找马 职业发展线路
  4. 小程序订阅消息和公众号模板消息
  5. 威客、私活、外包网站的网址收集
  6. 汽车行业大数据应用的五大方向
  7. 解读IPD流程体系的“三驾马车”
  8. MTK相机调试adb命令
  9. Eclipse java web在show view下没有server选项视图
  10. 瑞芯微RK3399嵌入式开发板Wifi 驱动 build in 方式