国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > BAT > 正文

mshta命令用法示例

2020-07-26 20:15:28
字體:
供稿:網(wǎng)友

它支持命令行參數(shù),可以接收JS和VBS的方法。看示例(在命令行下測試):

JS:

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

VBS:

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

調(diào)用VBS,分別使用MSGBOX函數(shù)和POPUP方法:

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

execute方法 一條語句連續(xù)彈二個信息框:

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

LZ他們弄的,調(diào)用系統(tǒng)的英文閱讀:

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

下面是其他網(wǎng)友的補充

今天在一個批處理里看到一條命令mshta,感興趣的可以搜索一下“mshta 批處理”

echo offstart mshta javascript:if(confirm("將連接網(wǎng)站檢測您是否安裝了.net 2.0運行庫,是否繼續(xù)?該操作將不影響安裝程序的運行!/r/n如果您確信已安裝相應(yīng).net組件,請按取消,否則請按確定!"))window.open(" http://www.test.com/test.aspx");window.close();

在百度查詢了一下,原來mshta.exe是微軟Windows操作系統(tǒng)相關(guān)程序,用于執(zhí)行.HTA文件,或在批處理中結(jié)合其他語言的代碼;如:mshta javascript,可用于運行一個HTML網(wǎng)頁而不會出現(xiàn)安全警告。

下面是摘錄內(nèi)容:

以下用js表示javascript,用vbs表示vbscript。

一般應(yīng)用

代碼:

mshta //www.survivalescaperooms.com

js與vbs

有時,可以在bat中調(diào)用mshta js或vbs來實現(xiàn)一定的功能。如彈出對話框:

代碼:

mshta "vbscript:msgbox("內(nèi)容",0,"標題") & window.close"

但是,并非所有的js和vbs命令都能通過mshta運行,比如wscript.sleep就不能。

代碼:

rem 以下代碼是錯誤的:

mshta "vbscript:wscript.sleep(1000) & window.close"

可見,mshta調(diào)用js或vbs也是有條件的。

基本規(guī)則

※mshta所引用的命令必須相當于一個數(shù)值或變量。

這句話是什么意思呢?學過vbs的朋友都知道,vbs中彈出對話框的命令是:

代碼:

msgbox "內(nèi)容",0,"標題"

但是,如果在bat中運行mshta "msgbox "內(nèi)容",0,"標題"",就會出現(xiàn)錯誤。這是因為msgbox "內(nèi)容",0,"標題"并不相當于一個數(shù)值或變量,而是相當于一個語句。

如果還沒有理解,就請看下面的vbs:

代碼:

a=1b=2c=a+bmsgbox "內(nèi)容"inputbox "內(nèi)容"d=msgbox("內(nèi)容")e=inputbox("內(nèi)容")

這段代碼中,第一行1是數(shù)值,a是變量,a=1是一個設(shè)置變量a的值為1的語句。

第二行2是數(shù)值,b是變量,b=2是語句。

第三行a+b這個整體相當于數(shù)值,c是變量,c=a+b是語句。

至于第四行,情況有些變化:

"內(nèi)容"是數(shù)值,msgbox "內(nèi)容"這個整體是一個彈出對話框的的語句。

第五行,"內(nèi)容"是數(shù)值,inputbox "內(nèi)容"是語句。

第六行msgbox("內(nèi)容")這個整體相當于數(shù)值(注意它與msgbox "內(nèi)容"的區(qū)別),d是變量,d=msgbox("內(nèi)容")是一個設(shè)置變量d的值為msgbox("內(nèi)容")的語句。

同理,第七行inputbox("內(nèi)容")相當于數(shù)值,e是變量,e=inputbox("內(nèi)容")是語句。

因此,以下命令都是有效的(其中 & window.close 暫時不去理會):

代碼:

@echo offmshta "vbscript:1 & window.close"mshta "vbscript:a & window.close"mshta "vbscript:a+b & window.close"mshta "vbscript:msgbox("內(nèi)容") & window.close"mshta "vbscript:inputbox("內(nèi)容") & window.close"

而以下命令都是無效的:

代碼:

::以下命令都是無效的mshta "vbscript:msgbox "內(nèi)容""mshta "vbscript:inputbox "內(nèi)容""

現(xiàn)在明白了吧?

對于js,也有類似的情況,只是js中不明顯罷了。
另外,我剛剛發(fā)現(xiàn)vbs中execute函數(shù)可以調(diào)用語句。很復雜,自己研究吧。

連接多個命令

連接多個命令時,每個命令都必須遵守上述的基本規(guī)則。

※對于js,用分號 ; 連接多個命令。

代碼:

mshta "javascript:alert('OK!');alert('1234');window.close()"

※對于vbs,用 & 連接多個命令。

代碼:

mshta "vbscript:msgbox("內(nèi)容") & msgbox("1234") & window.close"

※注意&在bat中有特殊意義,所以此時mshta后面的代碼必須用引號引起來!

window.close的作用

試著運行下面的代碼:

代碼:

mshta "vbscript:msgbox("內(nèi)容")"

你會發(fā)現(xiàn),不僅彈出了需要的對話框,還出現(xiàn)了一個討厭的白框。window.close的作用就是關(guān)閉它。

為什么wscript.sleep不能用

微軟最初設(shè)計mshta時是為了運行hta程序(可近似理解為HTML網(wǎng)頁程序),而wscript在HTML網(wǎng)頁上用不了(它只能在真正的js或vbs上用),所以調(diào)用mshta js或vbs時要避開它。

利用mshta制作圖形界面

其實,利用mshta也可以在bat中制作windows圖形界面,但在這里就不詳細介紹了。如果有興趣請看

http://baike.baidu.com/view/712376.htm或http://www.survivalescaperooms.com/article/40060.htm。

引用解釋:

※mshta所引用的命令必須相當于一個數(shù)值或變量。

這個只是針對 vbscript 協(xié)議。用其他方式運行vbs語句則可以。比如 about 協(xié)議:

代碼:

mshta "about:

確切的說法應(yīng)該是,用vbscript協(xié)議運行的代碼中,不能包含語句,只能是表達式和函數(shù)(此時函數(shù)其實也是表達式)。這里的語句是vbs概念中的語句(statement),而不是普通的“一句話”的意思(sentence)。

msgbox "內(nèi)容",0,"標題",這個的確是一條語句,而不是“相當于”。

e=inputbox("內(nèi)容"),在vbs腳本,它可以作為語句(賦值語句)也可以是表達式(比較變量e與函數(shù)inputbox("內(nèi)容")的返回值)。

如果用vbscript協(xié)議運行,則它只是比較表達式。

vbscript協(xié)議運行代碼可以用&連接不同的表達式,這個發(fā)現(xiàn)不錯。其實就是表達式連接符。

但如果要運行更復雜的語句,最好是用execute。execute也很簡單。

如alert方法,它不能直接在vbs腳本中運行,因為它是window對象的方法,而window對象是mshta、IE等html解釋器提供的,腳本宿主WSH并沒有提供。除非在vbs創(chuàng)建這樣的對象,比如InternetExplorer.Application。

mshta運行js語句沒有那樣的限制。超版都說了,只是 vbscript 協(xié)議有此限制。看來vbs到底是比js要差一點。

比如下面,var a=1就是明顯的賦值語句,alert方法與close方法也可以看作語句。

代碼:

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

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

我一直想做一個mshta實現(xiàn)文件下載,但總有些問題。

Microsoft.XMLHTTP 組件自身的問題,禁止跨域操作。

以上就是mshta命令用法示例的詳細內(nèi)容,更多關(guān)于mshta命令用法的資料請關(guān)注武林網(wǎng)其它相關(guān)文章!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 婺源县| 香格里拉县| 龙里县| 望城县| 北安市| 原平市| 小金县| 永泰县| 简阳市| 宁德市| 栖霞市| 洪湖市| 新民市| 安国市| 惠水县| 当涂县| 拜泉县| 富民县| 南郑县| 亳州市| 龙山县| 香港 | 化隆| 逊克县| 县级市| 铜梁县| 雷州市| 湟中县| 讷河市| 积石山| 汽车| 江城| 临潭县| 文昌市| 城固县| 蚌埠市| 英山县| 侯马市| 平顶山市| 丁青县| 江城|