it-swarm-ja.com

Windowsタスクスケジューラによって呼び出されたスクリプト/プログラムからコンピュータにビープ音を鳴らすにはどうすればよいですか?

Windows 7 HomeEditionを使用しています。コンピュータを一定時間待機させ、プログラムが終了する直前に警告音を鳴らしたいと思います。テストとして、次のバッチファイルを作成して、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

これは同じように機能します—手動で呼び出された場合にのみビープ音が鳴るという事実を含みます。タスクスケジューラから呼び出されると、ビープ音も鳴りません。ここで他に何を試すべきかわかりません。どんな助けでもいただければ幸いです。

5
gorcq

スクリプトからメディアプレーヤーシステムを起動しようとすると問題が発生する可能性があります。前述のようにCtrl+G文字を使用してバッチスクリプトを作成すると、システムのビープ音が使用されます。あなたが話していたCtrl+Cメソッドは実際には機能しないと思います。

コマンドプロンプトを開き、ディレクトリをバッチファイルを保存する場所に変更して、次のコマンドを入力します。

copy con beep.cmd

Ctrl+G、 Ctrl+Z

ここで、beep.cmdを実行すると、システムビープ音が使用されます。

このバッチファイルを実行するシステムタスクを作成しました。タスクを手動で実行すると、コマンドウィンドウが表示され、ビープ音が鳴ってから終了します。

これが機能する方法は、コマンドウィンドウに入力したものを指定したファイル(この場合はbeep.cmd)にコピーすることです。画面に表示されているものであっても、ファイルに^Gを入力することはできません。これは、実際には^Gを入力し、^Gを入力するだけだからです。は実際には別のASCII文字全体を表したものです。コマンドウィンドウメソッドを使用すると、実際のキー押下をファイルに保存できます。必要に応じて、バッチファイルを編集できます。その他の場合は、特別な文字で行を保持するようにしてください。おそらく、メモ帳の空のボックスのように見えます。

4
nhinkle

スケジュールされたタスクのプロパティで、「ユーザーと対話する」または「対話型」(またはそのようなもの)と呼ばれるオプションをタスクスケジューラで探します。これはチェックボックスである必要があり、オンにすると、タスクがGUIとオーディオシステムに表示されます。

それができない場合、Steve Gibson(有名なSpinRiteディスク修復ユーティリティの作成者)には、バッチファイルから.wavファイルを再生できる「Wizmo」と呼ばれるフリーウェアのコマンドラインツールがあります。

Wizmo(インストールは必要ありません-これはスタンドアロンツールです)
http://www.grc.com/wizmo/wizmo.htm

私はこれがあなたのためにも仕事をすることができることを望んでいます(もしそうなら、あなたは明らかに.wavファイルにビープ音を録音する必要があるでしょう)。

0

このコードは、文字0x07(16進数==^G==beep)は変数内にあり、echoコマンドラインで使用されます。

また、rundll32.exeを呼び出して、.dllファイルに含まれるサウンドを/@ npocmakainこの回答

@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

0
It Wasn't Me