none
スクリプトを使ってローカルでウィンドウを開かずに音楽を再生したい RRS feed

  • 質問

  • 毎度お世話になります。

    ●win10のマシーンで、

    ●ウィンドウを開かずに、

    ●cmdとかpsとかも開かずに、

    ●音楽を再生する

    上記全ての条件を満たすスクリプトはWSH VBS JavaScriptもしくはWSHとVBSやJSを組み合わせるたり、どんな方法がいいでしょうか?

    できれば、m4aファイルで実現できるといいなぁと思います。

    まだ未知のスクリプトがあったりするのでしょうか?

    snd = "C:\Windows\Media\Alarm01.wav"
    Set ws = CreateObject("Wscript.Shell")
    ws.Run snd, 0, False

    こんなコードを見つけて実験してみましたが、Groove Musicが起動してしまいました。

    何卒よろしくお願いします。

    2020年1月20日 5:06

すべての返信

  • サウンド(wav でも m4a でも)を再生するには何らかのアプリケーションが必要ですから、サウンドの再生時にはそのアプリケーションが起動します。ウィンドウを非表示のままで起動でき、かつそこで再生動作ができるアプリケーションを探すということになるでしょう。

    ※書かれているスクリプトで、Groove Music がウィンドウ非表示で起動するのが希望の動作のイメージですよね。


    Hebikuzure aka Murachi Akira

    2020年1月20日 7:40
  • 確かに何らかのアプリは必要ですが、Windowsは警告を出したりなにか間違った操作をしたりすると、アプリのウィンドウを表示しないでサウンド再生してますよね?

    それをスクリプトで実現したいのです。

    説明不足ですみません。

    Windows Media PlayerやInternet ExplorerのAPIを利用したり、DLLを借りてくるとか、そういうことはスクリプトに許可されてないのでしょうか?

    あれから調べてみて、Mshtca.exeとかは、近いことをさせてくれたりするのかなぁと、希望を持っていたりするのですが、いかがですか?

    引き続きよろしくお願いします。

    2020年1月20日 8:49
  • $Pl = New-Object System.Media.SoundPlayer('C:\Windows\Media\Alarm01.wav')
    $Pl.Play()

    こういうことでしょうか?



    2020年1月20日 9:14
  • コードをありがとうございます。

    これかどうか、たぶんこれと思いますが、拡張子は何で保存すればいいのでしょうか?

    2020年1月20日 15:21
  • Powershellのスクリプトなので拡張子は ps1 です。
    サンプルとして記載してますが、実際には利用後のオブジェクトの破棄などが必要なので追加してください。
    2020年1月20日 23:50
  • path=wscript.arguments(0)
    Dim wmp
    Set wmp=CreateObject("WMPlayer.OCX")
    wmp.settings.volume=60
    wmp.URL=path
    wmp.Controls.play()
    do
    wscript.sleep(2)
    loop until wmp.PlayState=1
    

    これは、VBScriptで、コマンドラインからファイルを受け取れるようにしたものですが、やってることは、PowerShellのいただいたコードと同じですか?

    2020年1月21日 2:19
  • 自分が投稿した内容は.NETのオブジェクト(下記URL参照)を利用したものなので、違いますね。
    WMPlayer.OCXはMediaPlayerのコントロールなので。

    参考:https://docs.microsoft.com/ja-jp/dotnet/api/system.media.soundplayer?view=netframework-4.8

    2020年1月21日 2:33