「追加ソフトウェアのダウンロードとインストール」に要約される提案された回答に少しショックを受けました...そして、システムにはすでにオペレーティングシステムと呼ばれる
一度Windows XPでこのタスクに最も簡単なmplayユーティリティを使用しました。ただし、GUIではなくタスクスケジューラは正常に起動しますが、Windows 7では削除され、sndrec32さえも削除されました。 巨大なwmplayerを実行するのはバカだと考えられているので、スクリプト言語に頼らなければなりません。
Windowsスクリプティングホスト用のvbsの単一行スクリプトの例は、インターネットで見つけることができます。最も簡単な例を次に示します。
Set oVoice = CreateObject( "SAPI.SpVoice" )
set oSpFileStream = CreateObject( "SAPI.SpFileStream" )
oSpFileStream.Open "c:\Windows\Media\tada.wav"
oVoice.SpeakStream oSpFileStream
oSpFileStream.Close
ちなみに、Windows 7でコードが機能したのは奇跡です。WindowsXPと比較して、多数のactivexオブジェクト(WMPlayerClassなど)が消え、SAPIクラスがいつ消えるのか、クラスがどのように変わるのか誰も知らず、顕微鏡で釘を打つ問題ではないためです したがって、この決定は論理的ではなく誤ったものであり、ActiveXはゆっくりと消滅し、論理的に.NET環境に殺されていると考えています。
私は新しいfangshellされたPowerShellで問題を解決しようとしました(私は料理することはできませんが、ドキュメントでは故意に大騒ぎしています) たとえば、ファイルを作成したり署名したりせずにコマンドラインからスクリプトを実行する通常の機会はありません(質問の結果、セキュリティは何よりも重要です)。
最も簡単なコードは次のとおりです。
手動で挿入して実行すると、powershell内でうまく機能します!$s=new-Object System.Media.SoundPlayer;$s.SoundLocation='C:\Windows\Media\tada.wav';$s.Play();
しかし、このように:
各コマンドは独自のコンテキストで実行されるため(つまり、各ステップで$ sが定義されていないため)、何も起こりません。powershell -Command $s=new-Object System.Media.SoundPlayer;$s.SoundLocation='C:\Windows\Media\tada.wav';$s.Play();
リダイレクトを使用してみました:
そして、その結果にショックを受けました-登録されたプレーヤーはデフォルトでwavファイルで起動されました(winampが見つかりました)。 一体どうして?echo $s=new-Object System.Media.SoundPlayer;$s.SoundLocation='C:\Windows\Media\tada.wav';$s.Play(); | powershell -command -
-command-を使用せずに:
PowerShellの単純な起動が発生し、コマンドの入力を待機します。echo $s=new-Object System.Media.SoundPlayer;$s.SoundLocation='C:\Windows\Media\tada.wav';$s.Play(); | powershell
さて、私はあきらめて、署名されていないスクリプトを解決しようとします(特権シェルで実行します):
上記のコードでファイルを作成して実行します(c:\ a.ps1に配置します):powershell Set-ExecutionPolicy Unrestricted
そして、何も得られません! 沈黙、エラーメッセージなし(未署名のスクリプトの起動を許可しない場合、対応するメッセージが表示されます)。powershell c:\a.ps1
TheBitsとPaulの UPD:象にさえ気づかず、スクリプトはゲームを終了せず、グループ化と&記号を使用してコマンドラインからコードを起動できます。
powershell -Command "& {$s=new-Object System.Media.SoundPlayer; $s.SoundLocation='C:/Windows/Media/tada.wav'; $s.Play(); Sleep -Seconds 9}"
多くのコメントに基づくUPD2:ファイルの継続時間の自動決定と$ s変数の例外を考えると、もちろん、最終的な解決策は次のようになります。
しかし、最も重要なことは、それが最初の問題を解決しないことです-System.Media.SoundPlayerはmp3ファイルを再生できません。 もっと難しいものを作る必要がありますが、元の問題の解決策を設定するためにこの投稿の目的についてさえ考えませんでした。powershell -Command (new-object Media.SoundPlayer "C:\Windows\Media\notify.wav").playsync();