如何通过 Windows 任务调度程序调用的脚本/程序使计算机发出哔哔声?

gor*_*rcq 5 windows-7 vb.net cmd.exe

我正在使用 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
Run Code Online (Sandbox Code Playgroud)

注意:按照我在本网站的另一个问题中找到的说明,“^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
Run Code Online (Sandbox Code Playgroud)

这以相同的方式工作 - 包括它仅在手动调用时发出哔哔声这一事实。从任务调度程序调用时,它也无法发出哔声。我不知道还有什么要尝试的,在这里。任何帮助,将不胜感激。

Ran*_*son 0

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

如果做不到这一点,Steve Gibson(著名的 SpinRite 磁盘修复实用程序的创建者)有一个名为“Wizmo”的免费软件命令行工具,它可以从批处理文件播放 .wav 文件:

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

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