4

Я использую Windows 7 Home Edition. Я хочу заставить свой компьютер подождать определенное время, а затем подать звуковой сигнал предупреждения, прежде чем он завершит работу программы. В качестве теста я написал следующий пакетный файл, чтобы проигрыватель Windows Media проигрывал радио, подождал 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

Это работает так же, включая тот факт, что он звучит только при вызове вручную. При вызове из планировщика задач он также не подает звуковой сигнал. Я не уверен, что еще попробовать здесь. Любая помощь будет оценена.

2 ответа2

4

Возможно, есть проблема с попыткой запустить систему медиаплеера из сценария. Вы можете создать пакетный скрипт с символом Ctrl+G как вы упомянули, и он будет использовать системный звуковой сигнал. Я не думаю, что метод Ctrl+C вы говорили, на самом деле работает.

Откройте командную строку, перейдите в каталог, в который вы хотите сохранить пакетный файл, и введите следующие команды:

copy con beep.cmd

Ctrl+G, Ctrl+Z

Теперь, если вы запустите beep.cmd , он должен использовать системный звуковой сигнал.

Я создал системную задачу для запуска этого пакетного файла, и когда я запускаю задачу вручную, появляется командное окно и подается звуковой сигнал, а затем завершается.

Это работает так, что он копирует все, что вы вводите в командном окне, в указанный файл, в данном случае beep.cmd . Вы не можете просто вставить ^G в файл, даже если это то, что появляется на экране, потому что при наборе текста на самом деле просто набираются ^ и G , тогда как ^G на самом деле представляет собой совершенно другой символ ASCII. Используя метод командной строки, вы можете сохранить фактическое нажатие клавиши в файл. Затем вы можете отредактировать пакетный файл, если хотите, чтобы он делал другие вещи, просто убедитесь, что строка содержит специальный символ. Это, вероятно, будет просто выглядеть как пустой блокнот в блокноте.

0

Ищите опцию в вашем планировщике задач в свойствах вашей запланированной задачи, которая называется [что-то вроде] "взаимодействовать с пользователем" или "интерактивно" (или что-то в этом роде). Это должен быть флажок, и если вы включите его, это должно привести к тому, что ваша задача появится в графическом интерфейсе, а также в аудиосистеме.

В противном случае у Стива Гибсона (создателя знаменитой утилиты восстановления дисков SpinRite) есть бесплатный инструмент командной строки под названием "Wizmo", который может воспроизводить файл .wav из пакетного файла:

  Wizmo (установка не требуется - это автономный инструмент)
  http://www.grc.com/wizmo/wizmo.htm

Я надеюсь, что это также поможет вам (если это так, то вам, очевидно, нужно записать звуковой сигнал в файл .wav).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .