Start/Stop 嵌入式 Windows Media Player 通过 VBScript 的方法

Start/Stop methods for embedded Windows Media Player via VBScript

我有以下代码工作正常。

<object   classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" id="WindowsMediaPlayer" 
width="242" height="202" style="position:absolute; left:1;top:1;">
  <param name="URL" value="C:\HTML\Sounds\oos.wav">
  <param name="autoStart" value="0">
</object>

我想在 VBScript 中为此对象创建 Start/Stop 方法。

所以我正在做

 Sub Start
            Dim oElm 
            Set oElm = document.getElementById("WindowsMediaPlayer")
            if oElm Is Nothing then
                MsgBox("element does not exist")
            else
               ' MsgBox("element exists")
                oElm.controls.play();
            end if

 End sub  

但是不行。

如何解决?

应该这样做

<object   classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" id="WindowsMediaPlayer" width="0" height="0">
</object>


Sub Start
            Dim oElm 
            Set oElm = document.getElementById("WindowsMediaPlayer")
            if oElm Is Nothing then
                MsgBox("element does not exist")
            else
                oElm.controls.stop()
                oElm.URL = "C:\HTML\Sounds\oos.wav"
            end if

 End sub  

我已经为此奋斗了一个月。我知道这不会无处不在,但我想分享一些背景故事。 我一直在为阳光下的一切创造无人值守的装置,它一直非常顺利,除了它......好吧,无人值守并且大部分是隐藏的,所以我不知道它的进展情况或其他任何事情。然后我决定使用 HTA 文件而不是单独使用 Powershell 或 VBScript。我想在这一切发生的时候,它会让我看到一些东西。很酷,对吧?我花了将近一年的时间来研究它,并尝试了我能找到的每一种不同的下放代码。今天得到了回报。 我找到了与 OBJECT 一起使用的相同代码,而不是常见的 VIDEO 标签。它很笨重,我想写更多的代码,但它确实有效……主要是。我无法向它发送 CSS 引用(即 OPACITY:.5),甚至无法定位该死的东西。我发现我可以使用 IE=7 或 8 引用进行细微的更改,但是编写脚本 (VBScript) 几乎是不可能的。无法找到始终有效的参考资料。或者,切换到 IE9 - IE11 破坏了我的其余代码。 None 的调用或参考是有意义的。 最终,它比我发现的任何东西都容易得多!回到最开始浪费了太多时间……C'est la vie!这是我的代码,尽管为了隐私我已经删除了我的个人域并将所有内容都放在本地。它可以工作,但不如使用流有效。希望这可以帮助。分享给大家!

注意:为了好玩,我选择展示我的自定义 Office 365 安装。显然我可以完全无人看管,但我只是使用文件而不是允许下载功能!

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

^^^ 这是关键! ^^^

<html>
<head>

<TITLE>Office 365 Installer</TITLE>

  <hta:application id="O365TK" 
    applicationname="O365TK" 
    border="none"
    caption="no"
    icon=".\MEDIA\myico.ico"
    showintaskbar="no"
    singleinstance="yes"
    sysmenu="no"
    windowstate="maximize"
   
    >
<style>
 body{overflow:hidden;background:black;}
 #proc{position:absolute;top:400px;left:20px;color:red;background:black;opacity:.3;}
 #BG{position:absolute;top:0;left:0;z-index:-1;}
 #myhead{position: absolute;  top:0;left:0;z-index:0;}
 #myvideo{position:absolute;top:0;left:0;height:100%;z-index:1; opacity:.5;}
</style>
</head>
<body>
<img id="BG">
<video id=myvideo type="video/mp4" autoplay src=".\MEDIA\cot.mp4"></video>
<div id="proc">Click Here to Start!</div>
<img id="myhead" src=".\MEDIA\label.png">
<script language="vbscript">
        x = 5

        Set ws = createobject("wscript.shell") 
        set fs = createobject("scripting.filesystemobject") 
        set sa = createobject("shell.application") 

            Sub window_onload
                sa.MinimizeAll
                pc=setInterval("pic_changer()",3000)
                setTimeout "clicker()",4000
                setTimeout "musicbox()", 3200
                settimeout "pic_changer()",10
            End Sub
            Sub window_onbeforeunload()
            'Set cd=location.pathname
                Unloader()
            End Sub
            Function wait()
                    ws.Run "wait.vbs",0,1 
'Lots of ways to go about putting a pause in the transmission. 
'I use an external vbs file with one line: wscript.sleep 1000 That's all!
                    window.focus
            End Function


            Function document_onclick()
                    myvideo.stop
                    musicbox()
            End Function

            Sub document_onkeypress()
                    If window.event.keyCode=27 Then
                        Unloader    
                    End if
            End sub

            Function proc_onclick()
                    'proc.innerhtml = "Download Office...<br>Please wait."
                    'wait:wait
                    'ws.run ".\Setup /configure .\TKO365.xml",0,1
                    proc.innerhtml = "Packaging Office...<br>Please wait."
                    wait:wait
                    ws.run ".\Setup /packager .\TKO365.xml .\Office",0,1
                    wait:wait
                    proc.innerhtml = "Install Office...<br>Please wait."
                    wait:wait
                    ws.run ".\Setup /configure .\TKO365.xml",0,1
                    
                    proc.innerhtml = "Customize Office!<br>Please wait."
                    wait:wait
                    ws.run ".\Setup /customize .\TKO365.xml",0,1
                    wait:wait
                    proc.innerhtml = "Mission Complete!<br>We're done here!"
                    wait:wait
                    proc.innerhtml = "Goodbye!"
                    wait
                    Unloader()
            End Function
            Function Unloader()
            
            clearInterval(pc)
                sa.UndoMinimizeALL
                ws.run "taskkill /f /im wscript.exe",0
                ws.run "taskkill /f /im mshta.exe",0
            End Function
            
            Function clicker()
                    do while x => 0
                        proc.innerhtml="Autostart in " & x & " seconds"
                        wait
                        x = x-1
                    Loop
                    proc.click()
            end Function


        
                Function musicbox()
                
                    max=230
                    min=1
                    Randomize
                    d = Int((max-min+1)*Rnd+min)
                    t = ".\MEDIA\" & d & ".mp4" 
'I renamed 230 tracks 1-230 for ease of calling them
                    myvideo.filename=t
                    myvideo.play
                End Function
                
                Function pic_changer()
                    Randomize
                    'Set ddd = document.getelementbyid("BG")
' I've left the above line for a sign of how horribly convoluted 
'things got when using IE8 and below. BG already exists. 
'I did not need to create another variable for it, 
'though this is what I had been forced to do with those other iterations of IE
                    dd = Int(Rnd*230)+1
                    bg.src=".\MEDIA\"& dd &".jpg"
                    With bg.style
                    .display="block"
                    .width="100%"
                    .position="absolute"
                    .top="0px"
                    .left="0px"
                    .backgroundRepeat="no-repeat"
                    End With
                    window.focus
                End Function



</script>