我目前已经实现了达到条件,Label标签背景色闪烁的功能,现在想在闪烁的同时加入报警声音。大概1分钟判断一次,所以声音不需要持续很长,只要起到提醒作用,10秒内即可。我尝试过用PlaySound函数,发现在播放声音时,其他功能就会暂停,而我需要的是报警声音和画面能同时进行。我看到网上关于VB播放声音文件的方法也很多,有些迷茫不知道该用哪个好。现在有点想用DirectX来做,但不知道从何学起,看哪些资料。有人能给我一些思路吗?

解决方案 »

  1.   

    playSound,指定第三个参数为SND_ASYNC ,即可异步播放,不会暂停
      

  2.   

    是的,用这个就可以了。问题是你要将调用Beep的代码放到合适的位置。
    '这是我个人的dll的代码,一段音乐,不刺耳,听着效果还行。
    Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As LongPublic Sub PlaySoundByBeep()
        Dim i As Long
        
        For i = 0 To 4
            Call Beep(1000 * i, 100 * (5 - i))
            Call Beep(1000 * (5 - i), 100 * i)
            DoEvents
        Next
    End Sub
      

  3.   

    playSound,指定第三个参数为SND_ASYNC ,即可异步播放,不会暂停
      

  4.   

    可以采用一个蜂鸣器,工控行业用板卡或PLC驱动,如果你没有,你可以考虑采用并口控制发声。工控行业都这么做
      

  5.   

    并口是TTL电平,可以驱动外接电源的继电器,从而驱动蜂鸣器。这个是可以实现的。
    关于如何控制并口,参阅:
    http://download.csdn.net/detail/veron_04/3152172
    我几年前做过类似开发,效果还行。
    问题的关键在于这个继电器一定要选好,通常是固态继电器
      

  6.   

    beep有二种形式,LZ直接使用beep()来得直接点