如何在其他软件(如WMP 游戏等)播放声音时用sndPlaySound函数从资源文件播放声音?
我用的源码如下Dim adrResWav() As Byte
adrResWav = LoadResData("x", "custom")
sndPlaySound adrResWav(0), SND_MEMORY

解决方案 »

  1.   

    98 2000 or xp 2003
      

  2.   

    当然能(在没有别的程序时)。如果有WMP在播放音乐,那么根本无法出声,直接结束程序!Private Declare Function sndPlaySound Lib "winmm" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
    Private Const SND_ASYNC = &H1
    Private Const SND_MEMORY = &H4Private Sub Form_Load()
    Dim adrResWav() As Byte
    For i = 1 To Len(Command)
    Select Case Mid(Command, i, 1)
    Case "1"
    adrResWav = LoadResData(1, "custom")
    Case "2"
    adrResWav = LoadResData(2, "custom")
    Case "3"
    adrResWav = LoadResData(3, "custom")
    Case "4"
    adrResWav = LoadResData(4, "custom")
    Case "5"
    adrResWav = LoadResData(5, "custom")
    Case "6"
    adrResWav = LoadResData(6, "custom")
    Case "7"
    adrResWav = LoadResData(7, "custom")
    Case "8"
    adrResWav = LoadResData(8, "custom")
    Case "9"
    adrResWav = LoadResData(9, "custom")
    End Select
    sndPlaySound adrResWav(0), SND_MEMORY
    Erase adrResWav
    DoEvents
    Next i
    End
    End Sub
      

  3.   

    我在什么情况下都行~呵呵!
    你的directx版本是??
      

  4.   

    注意!是先开WMP,后运行程序!
      

  5.   

    怎么样都行~呵呵!!
    这绝对是机器问题,不是代码问题!
    我这是板载的AC97声卡+WDM驱程.
      

  6.   

    这可能是与声卡硬件有关的问题,建议你多换几台机器试试!不要急着下结论!还有你代码,问题不少,Erase adrResWav这句不仅多余,还可能引起麻烦,换成下面试试:Private Sub Form_Load()
    Dim adrResWav() As Byte
    For i = 1 To Len(Command)
    adrResWav = LoadResData(clng(Mid(Command, i, 1)), "custom")
    if ubound(adrResWav)>-1 then sndPlaySound adrResWav(0), SND_MEMORY
    Next
    End
    End Sub