怎么加的?
7 个解决方案
#1
用mciSendString
#2
Option Explicit
Const SND_ASYNC = &H1 ' 异步播放
Const SND_MEMORY = &H4 ' lpszSoundName 指向一个内存文件
Const SND_NODEFAULT = &H2 ' 不使用缺省声音
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Sub Form_Load()
Call sndPlaySound("C:\WINNT\Media\canyon.mid", SND_ASYNC Or SND_NODEFAULT)
End Sub
你试一下,如果不好用,改变一下第二个参数,我的机器没有声卡~~
Const SND_ASYNC = &H1 ' 异步播放
Const SND_MEMORY = &H4 ' lpszSoundName 指向一个内存文件
Const SND_NODEFAULT = &H2 ' 不使用缺省声音
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Sub Form_Load()
Call sndPlaySound("C:\WINNT\Media\canyon.mid", SND_ASYNC Or SND_NODEFAULT)
End Sub
你试一下,如果不好用,改变一下第二个参数,我的机器没有声卡~~
#3
' 假设要在程序启动时播放c:\123.mid文件
' PlaySound是个自定义函数,可以播放.wav .mid .mp3 文件
Option Explicit
Private 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
Private Sub Form_Load()
PlaySound "c:\123.mid"
End Sub
' 播放指定磁盘中的音乐文件(.wav或.mid或.mp3)
' Filename 为音乐文件的路径及文件名
Function PlaySound(ByVal FileName As String) As Boolean
Dim cmd As String, exName As String
exName = Right(FileName, 3)
mciSendString "close " & exName, 0, 0, 0
cmd = "open " & FileName & " alias " & exName
mciSendString cmd, 0, 0, 0
PlaySound = mciSendString("play " & exName, 0, 0, 0)
End Function
' PlaySound是个自定义函数,可以播放.wav .mid .mp3 文件
Option Explicit
Private 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
Private Sub Form_Load()
PlaySound "c:\123.mid"
End Sub
' 播放指定磁盘中的音乐文件(.wav或.mid或.mp3)
' Filename 为音乐文件的路径及文件名
Function PlaySound(ByVal FileName As String) As Boolean
Dim cmd As String, exName As String
exName = Right(FileName, 3)
mciSendString "close " & exName, 0, 0, 0
cmd = "open " & FileName & " alias " & exName
mciSendString cmd, 0, 0, 0
PlaySound = mciSendString("play " & exName, 0, 0, 0)
End Function
#4
Private Sub Form_Load()
mciSendString "close MyWav", vbNullString, 0, 0
mciSendString "open " & MIDI文件 & " alias MyWav", vbNullString, 0, 0
mciSendString "play MyWav", vbNullString, 0, 0
End Sub
Option Explicit
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
mciSendString "close MyWav", vbNullString, 0, 0
mciSendString "open " & MIDI文件 & " alias MyWav", vbNullString, 0, 0
mciSendString "play MyWav", vbNullString, 0, 0
End Sub
Option Explicit
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
#5
建议使用sndPlaySound异步播放
#6
mciSendString是标准方法,当然简单一点的话,用Microsoft Multimedia Control甚至Media Player也是可以的(只是资源略有浪费)
#7
sndPlaySound用来播放wav各式的音乐,而nicExecute用来播放MIDI文件
sndPlaySound的具体用法如下:
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
以 及 如 下 的 标 识 常 量:
Public Const SND_SYNC = &H0
Public Const SND_ASYNC = &H1
Public Const SND_NODEFAULT = &H2
Public Const SND_MEMORY = &H4
Public Const SND_ALIAS = &H10000
Public Const SND_FILENAME = &H20000
Public Const SND_RESOURCE = &H40004
Public Const SND_ALIAS_ID = &H110000
Public Const SND_ALIAS_START = 0
Public Const SND_LOOP = &H8
Public Const SND_NOSTOP = &H10
Public Const SND_VALID = &H1F
Public Const SND_NOWAIT = &H2000
Public Const SND_VALIDFLAGS = &H17201F
Public Const SND_RESERVED = &HFF000000
Public Const SND_TYPE_MASK = &H170007
sndPlaySound 函 数 需 要 两 个 参 数, 第 一 个 参 数soundfilename 是 要 播 放 的WAV 文 件 的 名 称。 第 二 个 参 数 是 一 个 表 明 播 放 方 式 的 标 识 常 量, 其 定 义 的 值 如 上 所 示, 通 常 所 使 用 的 标 识 意 义 如 下:
SND_SYNC 播 放WAV 文 件, 播 放 完 毕 后 将 控 制 转 移 回 你 的 应 用 程 序 中。
SND_ASYNC 播 放WAV 文 件, 然 后 将 控 制 立 即 转 移 回 你 的 应 用 程 序 中, 而 不 管 对WAV 文 件 的 播 放 是 否 结 束。
SND_NODEFAULT 不 要 播 放 缺 省 的WAV 文 件, 以 免 发 生 某 些 意 外 的 错 误。
SND_MEMORY 播 放 以 前 已 经 加 载 到 内 存 中 的WAV 文 件。
SND_LOOP 循 环 播 放WAV 文 件。
SND_NOSTOP 在 开 始 播 放 其 它 的WAV 文 件 之 前, 需 要 完 成 对 本WAV 文 件 的 播 放。
注 意:SND_LOOP 标 识 通 常 需 要 同SND_ASYNC 共 同 使 用, 也 即 在 两 个 标 识 之 间 添 加 与 播 放 符, 以 免 在 对WAV 文 件 进 行 播 放 的 时 候 将 系 统 挂 起。
为 了 播 放MIDI 文 件, 你 需 要 在 你 的 程 序 窗 体 的 通 用 声 明 部 分 中, 或 是 标 准 模 块 中 添 加 如 下 的 声 明 语 句:
Private Declare Function mciExecute Lib "winmm.dll" Alias "mciExecute" (ByVal lpstrCommand As String) As Long
mciExecute 函 数 只 需 要 一 个 参 数,CommandString, 顾 名 思 义, 它 是 一 个 命 令 字 符 串, 用 于 表 明 对 声 音 文 件 播 放 的 命 令, 例 如, 希 望 完 整 播 放 声 音 文 件, 则 该 字 符 串 就 是 字 符 串損lay" 加 上 声 音 文 件 的 路 径 以 及 文 件 名 称,
sndPlaySound的具体用法如下:
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
以 及 如 下 的 标 识 常 量:
Public Const SND_SYNC = &H0
Public Const SND_ASYNC = &H1
Public Const SND_NODEFAULT = &H2
Public Const SND_MEMORY = &H4
Public Const SND_ALIAS = &H10000
Public Const SND_FILENAME = &H20000
Public Const SND_RESOURCE = &H40004
Public Const SND_ALIAS_ID = &H110000
Public Const SND_ALIAS_START = 0
Public Const SND_LOOP = &H8
Public Const SND_NOSTOP = &H10
Public Const SND_VALID = &H1F
Public Const SND_NOWAIT = &H2000
Public Const SND_VALIDFLAGS = &H17201F
Public Const SND_RESERVED = &HFF000000
Public Const SND_TYPE_MASK = &H170007
sndPlaySound 函 数 需 要 两 个 参 数, 第 一 个 参 数soundfilename 是 要 播 放 的WAV 文 件 的 名 称。 第 二 个 参 数 是 一 个 表 明 播 放 方 式 的 标 识 常 量, 其 定 义 的 值 如 上 所 示, 通 常 所 使 用 的 标 识 意 义 如 下:
SND_SYNC 播 放WAV 文 件, 播 放 完 毕 后 将 控 制 转 移 回 你 的 应 用 程 序 中。
SND_ASYNC 播 放WAV 文 件, 然 后 将 控 制 立 即 转 移 回 你 的 应 用 程 序 中, 而 不 管 对WAV 文 件 的 播 放 是 否 结 束。
SND_NODEFAULT 不 要 播 放 缺 省 的WAV 文 件, 以 免 发 生 某 些 意 外 的 错 误。
SND_MEMORY 播 放 以 前 已 经 加 载 到 内 存 中 的WAV 文 件。
SND_LOOP 循 环 播 放WAV 文 件。
SND_NOSTOP 在 开 始 播 放 其 它 的WAV 文 件 之 前, 需 要 完 成 对 本WAV 文 件 的 播 放。
注 意:SND_LOOP 标 识 通 常 需 要 同SND_ASYNC 共 同 使 用, 也 即 在 两 个 标 识 之 间 添 加 与 播 放 符, 以 免 在 对WAV 文 件 进 行 播 放 的 时 候 将 系 统 挂 起。
为 了 播 放MIDI 文 件, 你 需 要 在 你 的 程 序 窗 体 的 通 用 声 明 部 分 中, 或 是 标 准 模 块 中 添 加 如 下 的 声 明 语 句:
Private Declare Function mciExecute Lib "winmm.dll" Alias "mciExecute" (ByVal lpstrCommand As String) As Long
mciExecute 函 数 只 需 要 一 个 参 数,CommandString, 顾 名 思 义, 它 是 一 个 命 令 字 符 串, 用 于 表 明 对 声 音 文 件 播 放 的 命 令, 例 如, 希 望 完 整 播 放 声 音 文 件, 则 该 字 符 串 就 是 字 符 串損lay" 加 上 声 音 文 件 的 路 径 以 及 文 件 名 称,
#1
用mciSendString
#2
Option Explicit
Const SND_ASYNC = &H1 ' 异步播放
Const SND_MEMORY = &H4 ' lpszSoundName 指向一个内存文件
Const SND_NODEFAULT = &H2 ' 不使用缺省声音
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Sub Form_Load()
Call sndPlaySound("C:\WINNT\Media\canyon.mid", SND_ASYNC Or SND_NODEFAULT)
End Sub
你试一下,如果不好用,改变一下第二个参数,我的机器没有声卡~~
Const SND_ASYNC = &H1 ' 异步播放
Const SND_MEMORY = &H4 ' lpszSoundName 指向一个内存文件
Const SND_NODEFAULT = &H2 ' 不使用缺省声音
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Sub Form_Load()
Call sndPlaySound("C:\WINNT\Media\canyon.mid", SND_ASYNC Or SND_NODEFAULT)
End Sub
你试一下,如果不好用,改变一下第二个参数,我的机器没有声卡~~
#3
' 假设要在程序启动时播放c:\123.mid文件
' PlaySound是个自定义函数,可以播放.wav .mid .mp3 文件
Option Explicit
Private 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
Private Sub Form_Load()
PlaySound "c:\123.mid"
End Sub
' 播放指定磁盘中的音乐文件(.wav或.mid或.mp3)
' Filename 为音乐文件的路径及文件名
Function PlaySound(ByVal FileName As String) As Boolean
Dim cmd As String, exName As String
exName = Right(FileName, 3)
mciSendString "close " & exName, 0, 0, 0
cmd = "open " & FileName & " alias " & exName
mciSendString cmd, 0, 0, 0
PlaySound = mciSendString("play " & exName, 0, 0, 0)
End Function
' PlaySound是个自定义函数,可以播放.wav .mid .mp3 文件
Option Explicit
Private 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
Private Sub Form_Load()
PlaySound "c:\123.mid"
End Sub
' 播放指定磁盘中的音乐文件(.wav或.mid或.mp3)
' Filename 为音乐文件的路径及文件名
Function PlaySound(ByVal FileName As String) As Boolean
Dim cmd As String, exName As String
exName = Right(FileName, 3)
mciSendString "close " & exName, 0, 0, 0
cmd = "open " & FileName & " alias " & exName
mciSendString cmd, 0, 0, 0
PlaySound = mciSendString("play " & exName, 0, 0, 0)
End Function
#4
Private Sub Form_Load()
mciSendString "close MyWav", vbNullString, 0, 0
mciSendString "open " & MIDI文件 & " alias MyWav", vbNullString, 0, 0
mciSendString "play MyWav", vbNullString, 0, 0
End Sub
Option Explicit
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
mciSendString "close MyWav", vbNullString, 0, 0
mciSendString "open " & MIDI文件 & " alias MyWav", vbNullString, 0, 0
mciSendString "play MyWav", vbNullString, 0, 0
End Sub
Option Explicit
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
#5
建议使用sndPlaySound异步播放
#6
mciSendString是标准方法,当然简单一点的话,用Microsoft Multimedia Control甚至Media Player也是可以的(只是资源略有浪费)
#7
sndPlaySound用来播放wav各式的音乐,而nicExecute用来播放MIDI文件
sndPlaySound的具体用法如下:
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
以 及 如 下 的 标 识 常 量:
Public Const SND_SYNC = &H0
Public Const SND_ASYNC = &H1
Public Const SND_NODEFAULT = &H2
Public Const SND_MEMORY = &H4
Public Const SND_ALIAS = &H10000
Public Const SND_FILENAME = &H20000
Public Const SND_RESOURCE = &H40004
Public Const SND_ALIAS_ID = &H110000
Public Const SND_ALIAS_START = 0
Public Const SND_LOOP = &H8
Public Const SND_NOSTOP = &H10
Public Const SND_VALID = &H1F
Public Const SND_NOWAIT = &H2000
Public Const SND_VALIDFLAGS = &H17201F
Public Const SND_RESERVED = &HFF000000
Public Const SND_TYPE_MASK = &H170007
sndPlaySound 函 数 需 要 两 个 参 数, 第 一 个 参 数soundfilename 是 要 播 放 的WAV 文 件 的 名 称。 第 二 个 参 数 是 一 个 表 明 播 放 方 式 的 标 识 常 量, 其 定 义 的 值 如 上 所 示, 通 常 所 使 用 的 标 识 意 义 如 下:
SND_SYNC 播 放WAV 文 件, 播 放 完 毕 后 将 控 制 转 移 回 你 的 应 用 程 序 中。
SND_ASYNC 播 放WAV 文 件, 然 后 将 控 制 立 即 转 移 回 你 的 应 用 程 序 中, 而 不 管 对WAV 文 件 的 播 放 是 否 结 束。
SND_NODEFAULT 不 要 播 放 缺 省 的WAV 文 件, 以 免 发 生 某 些 意 外 的 错 误。
SND_MEMORY 播 放 以 前 已 经 加 载 到 内 存 中 的WAV 文 件。
SND_LOOP 循 环 播 放WAV 文 件。
SND_NOSTOP 在 开 始 播 放 其 它 的WAV 文 件 之 前, 需 要 完 成 对 本WAV 文 件 的 播 放。
注 意:SND_LOOP 标 识 通 常 需 要 同SND_ASYNC 共 同 使 用, 也 即 在 两 个 标 识 之 间 添 加 与 播 放 符, 以 免 在 对WAV 文 件 进 行 播 放 的 时 候 将 系 统 挂 起。
为 了 播 放MIDI 文 件, 你 需 要 在 你 的 程 序 窗 体 的 通 用 声 明 部 分 中, 或 是 标 准 模 块 中 添 加 如 下 的 声 明 语 句:
Private Declare Function mciExecute Lib "winmm.dll" Alias "mciExecute" (ByVal lpstrCommand As String) As Long
mciExecute 函 数 只 需 要 一 个 参 数,CommandString, 顾 名 思 义, 它 是 一 个 命 令 字 符 串, 用 于 表 明 对 声 音 文 件 播 放 的 命 令, 例 如, 希 望 完 整 播 放 声 音 文 件, 则 该 字 符 串 就 是 字 符 串損lay" 加 上 声 音 文 件 的 路 径 以 及 文 件 名 称,
sndPlaySound的具体用法如下:
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
以 及 如 下 的 标 识 常 量:
Public Const SND_SYNC = &H0
Public Const SND_ASYNC = &H1
Public Const SND_NODEFAULT = &H2
Public Const SND_MEMORY = &H4
Public Const SND_ALIAS = &H10000
Public Const SND_FILENAME = &H20000
Public Const SND_RESOURCE = &H40004
Public Const SND_ALIAS_ID = &H110000
Public Const SND_ALIAS_START = 0
Public Const SND_LOOP = &H8
Public Const SND_NOSTOP = &H10
Public Const SND_VALID = &H1F
Public Const SND_NOWAIT = &H2000
Public Const SND_VALIDFLAGS = &H17201F
Public Const SND_RESERVED = &HFF000000
Public Const SND_TYPE_MASK = &H170007
sndPlaySound 函 数 需 要 两 个 参 数, 第 一 个 参 数soundfilename 是 要 播 放 的WAV 文 件 的 名 称。 第 二 个 参 数 是 一 个 表 明 播 放 方 式 的 标 识 常 量, 其 定 义 的 值 如 上 所 示, 通 常 所 使 用 的 标 识 意 义 如 下:
SND_SYNC 播 放WAV 文 件, 播 放 完 毕 后 将 控 制 转 移 回 你 的 应 用 程 序 中。
SND_ASYNC 播 放WAV 文 件, 然 后 将 控 制 立 即 转 移 回 你 的 应 用 程 序 中, 而 不 管 对WAV 文 件 的 播 放 是 否 结 束。
SND_NODEFAULT 不 要 播 放 缺 省 的WAV 文 件, 以 免 发 生 某 些 意 外 的 错 误。
SND_MEMORY 播 放 以 前 已 经 加 载 到 内 存 中 的WAV 文 件。
SND_LOOP 循 环 播 放WAV 文 件。
SND_NOSTOP 在 开 始 播 放 其 它 的WAV 文 件 之 前, 需 要 完 成 对 本WAV 文 件 的 播 放。
注 意:SND_LOOP 标 识 通 常 需 要 同SND_ASYNC 共 同 使 用, 也 即 在 两 个 标 识 之 间 添 加 与 播 放 符, 以 免 在 对WAV 文 件 进 行 播 放 的 时 候 将 系 统 挂 起。
为 了 播 放MIDI 文 件, 你 需 要 在 你 的 程 序 窗 体 的 通 用 声 明 部 分 中, 或 是 标 准 模 块 中 添 加 如 下 的 声 明 语 句:
Private Declare Function mciExecute Lib "winmm.dll" Alias "mciExecute" (ByVal lpstrCommand As String) As Long
mciExecute 函 数 只 需 要 一 个 参 数,CommandString, 顾 名 思 义, 它 是 一 个 命 令 字 符 串, 用 于 表 明 对 声 音 文 件 播 放 的 命 令, 例 如, 希 望 完 整 播 放 声 音 文 件, 则 该 字 符 串 就 是 字 符 串損lay" 加 上 声 音 文 件 的 路 径 以 及 文 件 名 称,