Estoy usando Windows 7 Home Edition. Quiero hacer que mi computadora espere un cierto tiempo, luego emitir un pitido antes de que finalice un programa. Como prueba, escribí el siguiente archivo por lotes para hacer que Windows Media Player reproduzca la radio, espere 10 segundos, luego emita un pitido y apáguelo:
@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
Nota: siguiendo las instrucciones que encontré en otra pregunta de este sitio, la cosa "^ G" es el carácter que se obtiene al escribir control + G en un símbolo del sistema. Parece que no aparece en este sitio, así que lo reemplacé con ^ G.
Esto funcionó perfectamente. Hasta que, es decir, intenté hacer que se ejecutara automáticamente utilizando el Programador de tareas de Windows. Intenté esto varias veces y no sonó. Las otras funciones funcionaron bien, pero no se escuchó ningún pitido.
La secuencia de comandos no se ejecutó en una ventana cuando la inició el programador de tareas, y llegué a la conclusión de que esto debe causar problemas con el comando echo (nada de lo que hacer eco). Entonces, después de dedicar un tiempo a buscar un método para provocar el sonido que no implicaba eco, finalmente reescribí todo en forma de un programa de consola 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
Esto funciona de la misma manera, incluido el hecho de que solo suena cuando se llama manualmente. Cuando se llama desde el programador de tareas, también falla al emitir un pitido. No estoy seguro de qué más probar aquí. Cualquier ayuda sería apreciada.
Busque una opción en su Programador de tareas en las propiedades de su Tarea programada llamada [algo en la línea de] "interactuar con el usuario" o "interactiva" (o algo así). Debería ser una casilla de verificación y, si la activa, debería hacer que su tarea aparezca en la GUI y en el sistema de audio.
En su defecto, Steve Gibson (el creador de la famosa utilidad de reparación de discos SpinRite) tiene una herramienta gratuita de línea de comandos llamada "Wizmo" que puede reproducir un archivo .wav desde un archivo por lotes:
Wizmo (no requiere instalación - esta es una herramienta independiente)
http://www.grc.com/wizmo/wizmo.htm
Espero que esto pueda hacer el trabajo por usted también (si lo hace, obviamente necesitará grabar un pitido en un archivo .wav).
fuente