mshta命令用法示例

时间:2021-05-22

它支持命令行参数,可以接收JS和VBS的方法。看示例(在命令行下测试):

JS:

mshta vbscript:window.execScript("alert('hello world!');","javascript")

VBS:

mshta javascript:window.execScript("msgBox('hello world!'):window.close","vbs")

调用VBS,分别使用MSGBOX函数和POPUP方法:

mshta vbscript:msgbox("该干活了,伙计!",64,"提示")(window.close) mshta vbscript:CreateObject("Wscript.Shell").popup("该干活了,伙计!",7,"提示",64)(window.close)

execute方法 一条语句连续弹二个信息框:

mshta vbscript:execute("msgbox ""one BOX"":msgbox ""two BOX"":window.close")

LZ他们弄的,调用系统的英文阅读:

mshta vbscript:createobject("sapi.spvoice").speak("Good luck")(window.close)

下面是其他网友的补充

今天在一个批处理里看到一条命令mshta,感兴趣的可以搜索一下“mshta 批处理”

echo offstart mshta javascript:if(confirm("将连接网站检测您是否安装了.net 2.0运行库,是否继续?该操作将不影响安装程序的运行!\r\n如果您确信已安装相应.net组件,请按取消,否则请按确定!"))window.open(" http:///view/712376.htm或https://www.jb51.net/article/40060.htm。

引用解释:

※mshta所引用的命令必须相当于一个数值或变量。

这个只是针对 vbscript 协议。用其他方式运行vbs语句则可以。比如 about 协议:

代码:

mshta "about:

确切的说法应该是,用vbscript协议运行的代码中,不能包含语句,只能是表达式和函数(此时函数其实也是表达式)。这里的语句是vbs概念中的语句(statement),而不是普通的“一句话”的意思(sentence)。

msgbox "内容",0,"标题",这个的确是一条语句,而不是“相当于”。

e=inputbox("内容"),在vbs脚本,它可以作为语句(赋值语句)也可以是表达式(比较变量e与函数inputbox("内容")的返回值)。

如果用vbscript协议运行,则它只是比较表达式。

vbscript协议运行代码可以用&连接不同的表达式,这个发现不错。其实就是表达式连接符。

但如果要运行更复杂的语句,最好是用execute。execute也很简单。

如alert方法,它不能直接在vbs脚本中运行,因为它是window对象的方法,而window对象是mshta、IE等html解释器提供的,脚本宿主WSH并没有提供。除非在vbs创建这样的对象,比如InternetExplorer.Application。

mshta运行js语句没有那样的限制。超版都说了,只是 vbscript 协议有此限制。看来vbs到底是比js要差一点。

比如下面,var a=1就是明显的赋值语句,alert方法与close方法也可以看作语句。

代码:

mshta "javascript:var a=1; alert(a); close();"

不是CreateObject("WScript.Shell"),而是createObject("Microsoft.XMLHTTP")。

我一直想做一个mshta实现文件下载,但总有些问题。

Microsoft.XMLHTTP 组件自身的问题,禁止跨域操作。

以上就是mshta命令用法示例的详细内容,更多关于mshta命令用法的资料请关注其它相关文章!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章