调用API函数 每次让beep响时 我写的软件都会卡住,比如这时拖拽软件窗体也无法移动位置,就跟平时电脑卡住一样 响完后恢复正常 大家有过这样的经历吗?不知道为何出现这样的问题 想请教下朋友们有什么解决方法吗?

解决方案 »

  1.   

    Option Explicit
    Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long 'VB中的声明 beep 3170,1000
    因为beep时 是当当的错误声 感觉不适合长时间报警那种 我想要那种最好滴滴的报警声  所以就调用了 
    所以想请教下最好是哪个方案呢?
      

  2.   

    简单的beep就行了。loop里加个判断.
      

  3.   

    恩 呵呵 因为我这个系统是温度报警 感觉直接beep的声音不太适合 好像是操作失误那种声 所以想要滴滴声 不知道为何每次让beep响时 我写的软件都会卡住?
      

  4.   

    试一试这个:
    Option Explicit
    Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
    Private Declare Function GetTickCount Lib "kernel32" () As Long
    Private Sub Command1_Click()
        Dim lngP As Long
        Dim lngT As Long
        lngT = GetTickCount
        Do
            DoEvents
            lngP = Beep(3170, 10)
        Loop Until GetTickCount - lngT >= 1000
    End Sub
      

  5.   

    这样应该就可以了~~你的beep调用时,时间设的也够长的!
      

  6.   

    谢谢楼上的朋友们 比如在我的程序中 是不是直接在beep 3170,1000语句前面加个DoEvents就可以呢? 会造成其他影响吗?
      

  7.   

    应该beep变成循环,在beep过程中加,但有可能声音中断,
      

  8.   

    我看还有个办法......不过需要了解WAV格式.就是在内存里生成一段WAV,确定了音调.然后扔给sndplaysound............
      

  9.   

    如果是我,就用CoolEditPro生成一段WAV文件,在程序中使用MCI.MMControl控件播放这个WAV文件。