Javascript 从HTA应用程序打开程序

Javascript 从HTA应用程序打开程序,javascript,vbscript,internet-explorer-9,hta,Javascript,Vbscript,Internet Explorer 9,Hta,我正在尝试创建一个HTA应用程序,它可以在计算机上本地打开程序(exe、bat等) 这将在用户无法访问桌面等的信息亭PC上使用 但是,在找到一个有效的脚本时,会遇到一些问题 现在我正在使用以下脚本: <script type="text/javascript"> function runApp(which) { WshShell = new ActiveXObject("WScript.Shell"); WshShell.Run (which,1,true);

我正在尝试创建一个HTA应用程序,它可以在计算机上本地打开程序(exe、bat等)

这将在用户无法访问桌面等的信息亭PC上使用

但是,在找到一个有效的脚本时,会遇到一些问题

现在我正在使用以下脚本:

<script type="text/javascript">
    function runApp(which) {
    WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run (which,1,true);
    }
</script>

函数runApp(which){
WshShell=newActiveXObject(“WScript.Shell”);
Run(其中,1,true);
}
以下是我的链接的外观:

<a 
href="javascript:window.location.href=window.location.href" 
onclick="runApp('file://C:/Tools/program.exe');parent.playSound('assets/sounds/startsound.mp3');"
onmouseover="playSound('assets/sounds/hover.wav');"
unselectable="on"
style="cursor: hand; display: block;">Start Program
</a>

这个脚本的问题是,我从启动器HTA打开的一些程序放在全屏运行的HTA应用程序下面。。所以我需要ALT+TAB切换到它们

我一直在搜索另一个脚本,并找到了这个HTA示例,它看起来是一个更好的方法:

<!DOCTYPE html>
<html>
<head>

<meta http-equiv="X-UA-Compatible" content="IE=9">

<HTA:APPLICATION
APPLICATIONNAME="Open link with chrome browser"
BORDER="THIN"
BORDERSTYLE="NORMAL"
ICON="Explorer.exe"
INNERBORDER="NO"
MAXIMIZEBUTTON="NO"
MINIMIZEBUTTON="NO"
SCROLL="NO"
SELECTION="NO"
SINGLEINSTANCE="YES"/>
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="YES">
<title>Test HTA</title>
<SCRIPT LANGUAGE="VBScript">
'************************************************************************************
Option Explicit
 Function Executer(StrCmd)
 Dim ws,MyCmd,Resultat
 Set ws = CreateObject("wscript.Shell")
 MyCmd = "CMD /C " & StrCmd & " "
 Resultat = ws.run(MyCmd,0,True)
 Executer = Resultat
End Function
'************************************************************************************
Sub window_onload()
 CenterWindow 400,320
End Sub
'************************************************************************************
Sub CenterWindow(x,y)
 Dim iLeft,itop
 window.resizeTo x,y
 iLeft = window.screen.availWidth/2 - x/2
 itop = window.screen.availHeight/2 - y/2
 window.moveTo ileft,itop
End Sub
'************************************************************************************
</script>
</head>
<p>Links :</p>
<ol>
<li><a href="#" onClick="Call Executer('Start C:\ScriptExe.exe')">EXE test</a></li>
<li><a href="#" onClick="Call Executer('Start C:\Tools\Bats\menu.bat')">Bat test</a></li>
<li><a href="#" onClick="Call Executer('Start chrome.exe www.google.com chrome --app=https://www.google.com/')">Chrome App Test</a></li>
</ol>
<BODY>

</body>
</html>

测试HTA
'************************************************************************************
选项显式
函数执行器(StrCmd)
Dim ws、MyCmd、Resultat
设置ws=CreateObject(“wscript.Shell”)
MyCmd=“CMD/C”和StrCmd&“
Resultat=ws.run(MyCmd,0,True)
Executer=Resultat
端函数
'************************************************************************************
子窗口_onload()
中心窗口400320
端接头
'************************************************************************************
副中心窗口(x,y)
伊托普
window.resizeTo x,y
iLeft=window.screen.availWidth/2-x/2
itop=window.screen.availHeight/2-y/2
window.moveTo ileft,itop
端接头
'************************************************************************************
链接:

  • 脚本的问题在于,我需要使用:

    <meta http-equiv="X-UA-Compatible" content="IE=9">
    
    
    
    如果我将其添加到上面的示例中,它会中断,并在运行HTA时显示此错误:

    此页上的脚本中出现错误。行:46字符:31 错误:应为“;”代码:0

    看起来好像有什么东西坏了,这个linie和char 31是:调用Executer

    <li><a href="#" onClick="Call Executer('Start C:\ScriptExe.exe')">EXE test</a></li>
    
  • 如果我在我的HTA程序启动器应用程序上不使用IE=9,我使用的jquery会出现很多错误

    我以前没有使用hta、vbs的经验,只有一点java。。所以我必须使用我能找到的任何脚本


    有谁能告诉我,为什么IE=9内容标签无法使用此功能?

    请参考以下示例代码,使用HTA启动应用程序:

    <html>
    <head>
        <title>Application Executer</title>
        <HTA:APPLICATION ID="oMyApp" 
            APPLICATIONNAME="Application Executer" 
            BORDER="no"
            CAPTION="no"
            SHOWINTASKBAR="yes"
            SINGLEINSTANCE="yes"
            SYSMENU="yes"
            SCROLL="no"
            WINDOWSTATE="normal">
        <script type="text/javascript" language="javascript">
            function RunFile() {
            WshShell = new ActiveXObject("WScript.Shell");
            WshShell.Run("c:/windows/system32/notepad.exe", 1, false);
            }
        </script>
    </head>
    <body>
        <input type="button" value="Run Notepad" onclick="RunFile();"/>
    </body>
    </html>
    
    
    应用程序执行器
    函数RunFile(){
    WshShell=newActiveXObject(“WScript.Shell”);
    运行(“c:/windows/system32/notepad.exe”,1,false);
    }
    
    更多详细信息,您可以查看

    您是否尝试过使用
    IE=8或IE=10或IE=Edge
    ?我没看到的Jquery在哪里?你能用Jquery编辑并发布整个代码吗?是的,我试过其他IE版本。。Jquery内容仅在我的主启动器HTA上,而不是主题中的示例。。我的启动器HTA太大太复杂了,无法在这里共享代码。。但这不要紧,如果我能让我发布的脚本与IE=9一起工作,那么将代码复制到我的启动器HTA中应该不会有问题……谢谢你的回复。。我希望有更好的办法做到这一点。。如果需要在HTA文件上打开多个程序,则需要多次添加脚本。。也希望避免使用正斜杠。。当你不能将windows使用的地址复制到exe文件时,这会使事情变得复杂。。所以,如果可能的话,我更愿意为我在主题中发布的脚本找到一个修复程序。只需使用这个答案,但稍微扩展一下,以接受RunFile中的参数。