如何让计算机通过 Windows 任务计划程序调用的脚本/程序发出蜂鸣声?

如何让计算机通过 Windows 任务计划程序调用的脚本/程序发出蜂鸣声?

我使用的是 Windows 7 家庭版。我想让我的计算机等待一段时间,然后在终止程序之前发出警告蜂鸣声。作为测试,我编写了以下批处理文件,使 Windows Media Player 播放广播,等待 10 秒,然后发出蜂鸣声并将其关闭:

@echo off
start "_" "C:\Program Files (x86)\Windows Media Player\wmplayer.exe" "http://www.cpr.org/content_category_templates/listenTemplate/listenClassical48.asx"
sleep 10
@echo ^G
@echo ^G
@echo ^G
@echo ^G
taskkill /im wmplayer.exe /f

注意:根据我在此网站的另一个问题中找到的说明,“^G”符号是在命令提示符下键入 control + G 时获得的字符。它似乎没有出现在此网站上,因此我将其替换为 ^G。

这很完美。直到我尝试使用 Windows 任务计划程序让它自动运行。我试了几次,它都没有发出哔哔声。其他功能都很好用,但没有听到哔哔声。

任务调度程序启动时,脚本并未在窗口中运行,我断定这必定会导致 echo 命令出现问题(没有要回显的内容)。因此,在花了一些时间寻找一种不涉及回显的发出蜂鸣声的方法后,我最终以 VB .NET 控制台程序的形式重写了整个程序:

Imports System.Threading

Module Beep

    Sub Main()
        Dim wmp As New System.Diagnostics.Process
        wmp.StartInfo.FileName = "C:\Program Files (x86)\Windows Media Player\wmplayer.exe"
        wmp.StartInfo.Arguments = "http://www.cpr.org/content_category_templates/listenTemplate/listenClassical48.asx"
        wmp.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
        wmp.Start()
        Thread.Sleep(New TimeSpan(0, 0, 10))
        Console.Beep()
        Console.Beep()
        Console.Beep()
        Console.Beep()
        wmp.Kill()
    End Sub

End Module

它的工作原理相同——包括它只在手动调用时发出哔哔声。从任务计划程序调用时,它也不会发出哔哔声。我不确定这里还能尝试什么。任何帮助都将不胜感激。

答案1

尝试从脚本启动媒体播放器系统时可能会出现问题。您可以创建一个批处理脚本,其中包含Ctrl+G您提到的字符,它将使用系统蜂鸣声。我认为Ctrl+C您所说的方法实际上不起作用。

打开命令提示符,将目录更改为要保存批处理文件的位置,然后键入以下命令:

copy con beep.cmd

Ctrl+ G, Ctrl+Z

现在,如果您运行beep.cmd,它应该使用系统蜂鸣声。

我创建了一个系统任务来运行这个批处理文件,当我手动运行该任务时,命令窗口出现并发出哔哔声,然后退出。

它的工作方式是将您在命令窗口中输入的内容复制到指定的文件中,在本例中为beep.cmd。您不能直接将 放入^G文件中,即使屏幕上显示的内容也是如此,因为输入 实际上是输入^G,而^G实际上是完全不同的 ASCII 字符的表示。通过使用命令窗口方法,您可以将实际的按键保存到文件中。然后,如果您希望批处理文件执行其他操作,则可以编辑它,只需确保保留包含特殊字符的行即可。它可能看起来只是记事本中的一个空框。

答案2

在任务计划程序中的计划任务属性中查找一个名为“与用户交互”或“交互”(或类似名称)的选项。它应该是一个复选框,如果您将其打开,则您的任务应该出现在 GUI 和音频系统中。

除此之外,Steve Gibson(著名 SpinRite 磁盘修复实用程序的创建者)有一个名为“Wizmo”的免费命令行工具,它可以从批处理文件中播放 .wav 文件:

  Wizmo(无需安装——这是一个独立工具)
  http://www.grc.com/wizmo/wizmo.htm

我希望这也能为您完成这项工作(如果可以,那么您显然需要在 .wav 文件中录制哔声)。

答案3

此代码将保存角色0x07(十六进制 ==^G==beep)在变量中,并将被echo命令行。

还调用rundll32.exe输出包含在.dll 文件,由/@npocmaka这个答案

@echo off && setlocal EnableDelayedExpansion

title <nul && title Windows Media Player && cd /d "%~dp0" 

%__APPDIR__%mode.com con: cols=50 lines=3 && cls && set "_url=http://94.23.221.158:9197/stream"
for /f %%i in ('%__APPDIR__%forfiles.exe /m "%~nx0" /c "cmd.exe /c echo/0x07"') do set "_Beep=%%~i"
echo/Starting Windows Media Player... & start "_"  "C:\Program Files (x86)\Windows Media Player\wmplayer.exe" %_url%


"%__APPDIR__%timeout.exe" /t 10 >nul & color f4
for /L %%L in (1 1 9)do echo/!_Beep!Times up^!!...&& %__APPDIR__%pathping.exe 127.1 -n -q 1 -p 666 >nul && (
     color 4f & %__APPDIR__%rundll32.exe %__APPDIR__%cmdext.dll,MessageBeepStub & color f4 & cls & echo/
     call "%__APPDIR__%pathping.exe" 127.1 -n -q 1 -p 666 >nul & echo/!_Beep!Times up^!!...& cls & echo/ 
     )

"%__APPDIR__%taskkill.exe" /f /im "wmplayer.exe" >nul & endlocal & color 0a & goto :EOF

相关内容