mciSendString 怎么获取播放状态下面的一段代码有什么问题(怎么老是"stopped"?)Public Function GetStatus(nowplay As String) As String '获取播放状态
Dim strStatus   As String
  strStatus = String(256, Chr(0))
  mciSendString "status " & nowplay & " mode", strStatus, Len(strStatus), 0
  GetStatus = Left(strStatus, 7)
End Function

解决方案 »

  1.   

    说详细点,下面是代码,帮忙看下
    模块代码:
    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
     Public Function GetStatus(nowplay As String) As String '获取播放状态
    Dim strStatus   As String
      strStatus = String(256, Chr(0))
      mciSendString "status " & nowplay & " mode", strStatus, Len(strStatus), 0
      GetStatus = Left(strStatus, 7)
    End FunctionPublic Sub Restartmedia(atfrm As Form, filename As String)  '重新播放
    Dim nReturn As Long
    Call openmedia(atfrm, filename)
    mciSendString "Seek " & filename & " to " & 0, "", 0, 0
    Call playmedia(atfrm)
    End SubPublic Sub playmedia(atfrm As Form) '播放
        atfrm.ScaleMode = vbPixels
        mciSendString "put MyAVI window at 0 0 " & atfrm.ScaleWidth & " " & atfrm.ScaleHeight, vbNullString, 0, 0
        mciSendString "play MyAVI", vbNullString, 0, 0
    End Sub
    Public Sub openmedia(atfrm As Form, filename As String) '打开媒体
        mciSendString "close MyAVI", vbNullString, 0, 0
        mciSendString "open " & filename & " alias MyAVI  parent " & atfrm.hWnd & " style child", vbNullString, 0, 0
    End SubPublic Sub closemedia() '关闭媒体
    mciSendString "close MyAVI", vbNullString, 0, 0
    End SubPublic Sub Pause()  '暂停
    Dim nReturn As Long
    If GetStatus = "paused" Then '如果先前已经暂停了,则解除暂停
       playmedia
    Else
     mciSendString "Pause " & PathName, "", 0, 0
    End If
    End Sub窗体代码:Private Sub Form_Load()
       PathName = App.Path
      If Right(PathName, 1) <> "\" Then PathName = PathName & "\"
        PathName = PathName & "donghua.avi"
     Call openmedia(Me, PathName)
     Call playmedia(Me)
    End SubPrivate Sub tmrshow_Timer()
     Debug.Print GetStatus(PathName) '打印状态
    End Sub
      

  2.   

    晕了,现在问题解决了,少了点东西:Public Function GetStatus() As String  '获取播放状态
    Dim strStatus   As String
      strStatus = String(256, Chr(0))
      mciSendString "status   MyAVI   mode", strStatus, Len(strStatus), 0
    '原来是mciSendString "status " & nowplay & " mode", strStatus, Len(strStatus), 0
      GetStatus = Left(strStatus, 7)
    End Function现在可以获取状态了(MyAVI是别名,我是新手,代码是看别人的,开始弄不清楚)