小弟现在做一个会报警的程序,只要一检测的危机,立马发出警告声音,直到人为停止.可是mciExecute只有open,stop,pause,等几个指令,怎样才能让它不停播放但是又不影响别的任务的执行,而且不用控件.谢谢!!

解决方案 »

  1.   


    建议你用sndPlaySound这个API函数来做,下面给一个我写的定时报警的例子
    Dim i, x As Integer
    Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
    Const SND_SYNC = &H0Private Sub Form_Load()
    Dim x, i As Integer
    line:
    x = Int(Val(InputBox("设定报警时间:", "数据输入")))
    If x < 1 Then GoTo line
    Label1.Caption = "设定报警时间为" & x & "分钟"
    i = 0
    End SubPrivate Sub Timer1_Timer()
    Dim i As Integer, ret As Long, a As SingleLabel2.Caption = Time
    i = i + 1
    a = i Mod (60 * x)
    If a = 0 Then
    ret = sndPlaySound(App.Path & "\" & "111.wav", SND_SYNC) '111.wav是报警声音文件
    End If
    Debug.Print i
    End Sub
      

  2.   

    谢谢老张,可是ret = sndPlaySound(App.Path & "\" & "111.wav", SND_SYNC)在播放到111.wav文件末尾时会自动停止,我要的是它能重新再放,而且不影响程序的运行,直到人为停止,哪位兄弟有更好的方法.
      

  3.   

    循环播放只要将最后一个参数改为SND_LOOP ,对应值为&H9就行了
      

  4.   

    停止播放:
    sndPlaySound("", SND_SYNC) '111.wav是报警声音文件 
    或者:
    sndPlaySound(VbNullChar, SND_SYNC) '111.wav是报警声音文件 
      

  5.   

    一定得用同步方式么(SND_SYNC)?我用异步方式(SND_ASYNC)停止不了.