none
可否把一個wav檔的資訊包含在exe裡頭 RRS feed

  • 問題

  • 我在Visual Basic 2005裡用了播放音樂的指令

        My.Computer.Audio.Play("C:\Waterfall.wav", AudioPlayMode.Background)

    這樣的做法變成在C:\一定要有該wav

    能否把Waterfall.wav做什麼修改, 就可以包在exe檔中, 不用再外部呼叫?

    謝謝

    2006年3月23日 下午 02:59

解答

所有回覆

  • 若要簡化音效檔的管理,請考慮將檔案儲存為應用程式資源。然後可以透過 My.Resources 物件存取它們。

    2006年3月24日 上午 12:53
  • 各位好:

     

    剛好有用到這個需求, 總算是把 resource 試出來了!

    我新增加了一個名稱為 Resource.resx 的 resource file 到專案裡面

    看 help 說, 加進去的物件, 可以這樣使用:

    Resources added this way are available using My.Resources.resourceFileName.resourceName.

     

    但是我加入了名稱為 test.wav 之後, 卻無法使用:

    My.Computer.Audio.Play(My.Resources.Audio.test, AudioPlayMode.BackgroundLoop)

    My.Computer.Audio.Play(My.Resources.wav.test, AudioPlayMode.BackgroundLoop)

    去播放他

     

    後來這樣寫

    My.Computer.Audio.Play(My.Resources.Resource.test, AudioPlayMode.BackgroundLoop)

    是沒有 error 警示, 但實際上一跑, 卻又出現 : The wave header is corrupt.

     

    請問我該怎麼改? 拜託請請指點一下, 謝謝.

    2007年6月24日 下午 12:31
  • 搞定了!

    的確是

    My.Computer.Audio.Play(My.Resources.Resource.test, AudioPlayMode.BackgroundLoop)

    這樣用才對. 跟 help 和查到的方式都不一樣. -_-

    同時, 那個錯誤, 是因為 wav 檔案使用 Windows 的 Sound Recorder 錄音時, 超過 60 秒他自己停掉, 於是 header 就有錯誤.

    重錄一遍, 在 50 秒的時候自己手動停止, 出來的檔案就沒問題...

    2007年6月24日 下午 01:56