VBA BEEP 音效

                  'http://www.cc.chu.edu.tw/~u8802154/Multimedia/Page2.htm
如何播放聲音檔或視訊檔

以下是透過 mciSendString 函數執行 MCI 指令進而播放聲音檔的方法:

mciSendString  "close c:\windows\media\Ding.wav", vbNullString, 0, 0

mciSendString  "open c:\windows\media\Ding.wav", vbNullString, 0, 0

mciSendString  "play c:\windows\media\Ding.wav", vbNullString, 0, 0

綠色部分注意要小寫

 

在使用 MCI 指令之前,切記須先將 MCI 關閉,下次再執行播放時才能

正確播放,或者是將播放的位置改變到最前面,描述如下:

mciSendString  "seek c:\windows\media\Ding.wav to start", vbNullString, 0, 0

mciSendString  "play c:\windows\media\Ding.wav", vbNullString, 0, 0 

 

另外,seek 的其他用法如下:

seek 媒體名稱 to start   將位置移到最前面

seek 媒體名稱 to end   將位置移到最後面

seek 媒體名稱 to position   將位置移到 position 

 

 

除了聲音檔之外,如何播放視訊檔呢?

其實以上所介紹的 MCI 指令,除了可以用來播放聲音檔之外,也可以用

來播放 MIDI  檔及 AVI 檔,不必經過任何修改,Windows  會自動產生一

個視窗播放此視訊檔,但是可不可以在指定的位置上播放呢?答案是可以

的,方法如下:

open AVI 檔名 parent hWnd style child

其中,hWnd 需填入某個物件的 hWnd 

執行上述命令之後,影片會被放置在物件的左上角,且影片的大小不受

物件大小的影響,如果想要改變影片播放的位置及大小時,可以在執行

 play  指令前先執行 put 指令,格式如下:

put AVI 檔名 window at X Y [Width Height]

 其中 X  及 Y 參數須填入位置,而 Width 及 Height參數則填入影片顯示出來的寬度及高度

其他常用的 MCI 指令:

        pause 設備名稱   暫停播放

        stop 設備名稱   停止播放

        step 設備名稱   前進到下一個位置

        step 設備名稱 reverse   後退到上一個位置

        step 設備名稱 by N   前進或後退 N 個位置

      (其中 N<0 即表示後退)

        status 設備名稱 position   讀取目前的播放位置

        status 設備名稱 length   讀取媒體的總長度

 

小秘訣:

其實我們可以在 open 指令加上:

  「API 類型」alias 自訂的媒體設備名稱」

open c:\windows\media\Ding.wav alias MyWav

以上敘述的用途是為 c:\windows\media\Ding.wav 聲音檔取一個比較容易

記憶與書寫的名稱,接著在其他 MCI 的指令當中,便可以將繁雜的

c:\windows\media\Ding.wav 置換成 MyWav,例如:

mciSendString  "close MyWav", vbNullString, 0, 0

mciSendString  "open MyWav", vbNullString, 0, 0

mciSendString  "play MyWav", vbNullString, 0, 0 


'=============================


'http://www.cc.chu.edu.tw/~u8802154/Multimedia/Page2.htm
Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

在程式區家上呼叫音樂檔
       file1 = "D:\pocketPC\Audio-1.wav" '填要播放的音樂檔
     mciSendString "seek " & file1 & " to start", vbNullString, 0, 0
        mciSendString "open " & file1, vbNullString, 0, 0
        mciSendString "play " & file1, vbNullString, 0, 0

'http://forum.twbts.com/viewthread.php?tid=3563
'http://edisonx.pixnet.net/blog/post/60684029-%5B%E9%9F%B3%E6%95%88%5D-%E4%BD%BF%E7%94%A8%E6%8F%9A%E8%81%B2%E5%99%A8-(beep)
'http://www.blueshop.com.tw/board/FUM20050124191756KKC/BRD20071223011829C2R.html
'https://tw.answers.yahoo.com/question/index?qid=20110826000010KK06174
'https://tw.answers.yahoo.com/question/index?qid=20080427000010KK06462
'https://tw.answers.yahoo.com/question/index?qid=20131211000015KK00610
'https://www.google.com.tw/webhp?sourceid=chrome-instant&rlz=1C1JRYI_enTW714TW714&ion=1&espv=2&ie=UTF-8#q=vba%20beep%20%E9%9F%B3%E6%95%88

'http://raz-soft.com/cpp/mcisendstring-playing-with-sounds/
'https://sites.google.com/site/syanjiushi/cheng-shi-yu-yan-pai-ming/mci-xiang-xi-zi-liao-vb-ban