Como posso fazer o computador emitir um bipe a partir de um script / programa chamado pelo agendador de tarefas do Windows?

3

Estou usando o Windows 7 Home Edition. Eu quero fazer meu computador esperar um certo período de tempo, em seguida, apitar aviso antes de encerrar um programa. Como teste, eu escrevi o seguinte arquivo em lote para fazer o Windows Media Player tocar o rádio, esperar 10 segundos, então bipar e desligá-lo:

@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: seguindo as instruções que encontrei em outra pergunta neste site, a coisa "^ G" é o caractere que você obtém quando você digita control + G em um prompt de comando. Não parece aparecer neste site, então eu substituí-lo com ^ G.

Isso funcionou perfeitamente. Até que eu tentei executá-lo automaticamente usando o Agendador de Tarefas do Windows. Eu tentei isso várias vezes e não bipou. As outras funções funcionaram bem, mas nenhum bipe foi audível.

O script não foi executado em uma janela quando iniciado pelo agendador de tarefas e eu concluí que isso deve causar problemas com o comando echo (nada para ecoar). Então, depois de passar algum tempo pesquisando um método para causar o bipe que não envolvia eco, eu finalmente reescrevi a coisa toda na forma de um programa de console do 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

Isso funciona da mesma maneira - incluindo o fato de que ele apenas apita quando chamado manualmente. Quando chamado do agendador de tarefas, ele também não apita. Não tenho certeza do que mais tentar aqui. Qualquer ajuda seria apreciada.

    
por gorcq 08.04.2011 / 05:19

2 respostas

4

É possível que exista um problema ao tentar iniciar o sistema do media player a partir de um script. Você pode criar um script em lote com o caractere Ctrl+G , conforme mencionado, e usar o bipe do sistema. Eu não acho que o método Ctrl+C do qual você estava falando realmente funciona.

Abra um prompt de comando, altere os diretórios para onde você deseja salvar o arquivo em lote e digite os seguintes comandos:

copy con beep.cmd

Ctrl + G , Ctrl + Z

Agora, se você executar beep.cmd , ele deverá usar o bipe do sistema.

Eu criei uma tarefa do sistema para executar esse arquivo em lote, e quando executo a tarefa manualmente, a janela de comando aparece e emite um bipe e, em seguida, sai.

A maneira como isso funciona é que ele copia tudo o que você digita na janela de comando no arquivo especificado, neste caso beep.cmd . Você não pode simplesmente colocar ^G no arquivo, mesmo que seja o que aparece na tela, porque digitar é apenas digitar ^ e G , enquanto ^G é na verdade uma representação de um caractere ASCII diferente completamente. Usando o método da janela de comando, você pode salvar a pressão real no arquivo. Você pode editar o arquivo de lote se quiser fazer outras coisas, apenas certifique-se de preservar a linha com o caractere especial. Provavelmente parecerá apenas uma caixa vazia no bloco de notas.

    
por 08.04.2011 / 06:05
0

Procure uma opção em seu Agendador de Tarefas nas propriedades da sua Tarefa Agendada chamada [algo ao longo das linhas] "interagir com o usuário" ou "interativo" (ou algo parecido). Deve ser uma caixa de seleção, e se você ligá-la, deve fazer com que sua tarefa apareça na GUI, bem como no sistema de áudio.

Se isso não der certo, o Steve Gibson (criador do famoso utilitário de reparo de disco SpinRite) tem uma ferramenta de linha de comando freeware chamada "Wizmo" que pode reproduzir um arquivo .wav de um arquivo de lote:

Wizmo (não requer instalação - esta é uma ferramenta independente)
link

Espero que isso também faça o trabalho para você (se isso acontecer, você obviamente precisará gravar um som de bipe em um arquivo .wav).

    
por 08.04.2011 / 05:35