2017-03-07 99 views
0

所以我在批量編程中製作遊戲,並決定在標題菜單屏幕上添加一些主題音樂。我添加音樂的方式是使用WScript和VBScript播放mp3文件。如何停止在批處理程序中啓動的VBScript?

唯一的問題是,一旦它開始在後臺播放而不是通過批處理文件,因此,一旦你開始遊戲,主題音樂繼續播放。我已經使用這個腳本進行簡單的小聲音,很快就會結束,所以這從來都不是問題。

所以我的問題是,是否可以從批處理文件中停止,而不必做舊按Ctrl + Alt鍵+德爾方法腳本?

這是我在文字腳本:

set music=ThemeMusic.mp3 
(echo Set Sound = CreateObject("WMPlayer.OCX.7"^) 
echo Sound.URL = "%music%" 
echo Sound.Controls.play 
echo Do While Sound.currentmedia.duration = 0 
echo WScript.Sleep 100 
echo Loop 
echo WScript.Sleep (Int(Sound.currentmedia.duration^)+1^)*1000) >sound.vbs 
start /max sound.vbs 

,這裏是對於通過批處理文件打開獨立的VBScript代碼:

Set Sound = CreateObject("WMPlayer.OCX.7") 
Sound.URL = "ThemeMusic.mp3" 
Sound.Controls.play 
Do While Sound.currentmedia.duration = 0 
    WScript.Sleep 100 
Loop 
WScript.Sleep (Int(Sound.currentmedia.duration)+1)*1000 
+2

我們已經可以看到您的代碼創建Vbscript。無需再次發佈。如果你想殺死一個程序使用TASKKILL。 – Squashman

回答

0

使用命令TASKKILL /IM wscript.exe。但是,請記住,這將結束所有VBScript進程。

將來,在控制檯中使用TASKKILL /?可用於各種其他方法。它將顯示以下內容:

TASKKILL [/S system [/U username [/P [password]]]] 
     { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F] 

Description: 
    This tool is used to terminate tasks by process id (PID) or image name. 

Parameter List: 
    /S system   Specifies the remote system to connect to. 

    /U [domain\]user Specifies the user context under which the 
          command should execute. 

    /P [password]  Specifies the password for the given user 
          context. Prompts for input if omitted. 

    /FI filter   Applies a filter to select a set of tasks. 
          Allows "*" to be used. ex. imagename eq acme* 

    /PID processid  Specifies the PID of the process to be terminated. 
          Use TaskList to get the PID. 

    /IM imagename  Specifies the image name of the process 
          to be terminated. Wildcard '*' can be used 
          to specify all tasks or image names. 

    /T      Terminates the specified process and any 
          child processes which were started by it. 

    /F      Specifies to forcefully terminate the process(es). 

    /?      Displays this help message. 

Filters: 
    Filter Name Valid Operators   Valid Value(s) 
    ----------- ---------------   ------------------------- 
    STATUS  eq, ne     RUNNING | 
              NOT RESPONDING | UNKNOWN 
    IMAGENAME  eq, ne     Image name 
    PID   eq, ne, gt, lt, ge, le PID value 
    SESSION  eq, ne, gt, lt, ge, le Session number. 
    CPUTIME  eq, ne, gt, lt, ge, le CPU time in the format 
              of hh:mm:ss. 
              hh - hours, 
              mm - minutes, ss - seconds 
    MEMUSAGE  eq, ne, gt, lt, ge, le Memory usage in KB 
    USERNAME  eq, ne     User name in [domain\]user 
              format 
    MODULES  eq, ne     DLL name 
    SERVICES  eq, ne     Service name 
    WINDOWTITLE eq, ne     Window title 

    NOTE 
    ---- 
    1) Wildcard '*' for /IM switch is accepted only when a filter is applied. 
    2) Termination of remote processes will always be done forcefully (/F). 
    3) "WINDOWTITLE" and "STATUS" filters are not considered when a remote 
     machine is specified. 

Examples: 
    TASKKILL /IM notepad.exe 
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T 
    TASKKILL /F /IM cmd.exe /T 
    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*" 
    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe 
    TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM * 
    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*" 
+0

是否有可能以這種方式結束特定的vbs腳本,還是必須結束所有的vbs腳本? – Haxz4Lyfe

+0

只有VBScript有一個打開窗口並帶有唯一標題的窗口。 –

相關問題