MCIÃüÁîÏê½â 'ÓÃMCIÃüÁîÀ´ÊµÏÖ¶àýÌåµÄ²¥·Å¹¦ÄÜ 'ÏÂÃæµÄÄÚÈݼ¸ºõÓв¥·ÅÆ÷Èí¼þµÄ¸÷ÖÖ¹¦ÄÜ£¬ÄãÖ»ÊÇÒýÓÃÕâЩº¯Êý¾ÍÄÜ×ö³öÒ»¸ö²¥·ÅÆ÷À´ ' Public 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 Declare Function mciGetDeviceID Lib "winmm.dll" Alias "mciGetDeviceIDA" (ByVal lpstrName As String) As Long Public Declare Function waveOutGetVolume Lib "winmm.dll" (ByVal uDeviceID As Long, lpdwVolume As Long) As Long Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long Enum PlayTypeName File = 1 CDAudio = 2 VCD = 3 RealPlay = 4 End Enum Dim PlayType As PlayTypeName Enum AudioSource AudioStereo = 0 ' "stereo" AudioLeft = 1 '"left" AudioRight = 2 '"right" End Enum Dim hWndMusic As Long Dim prevWndproc As Long '======================================================= '´ò¿ªMCIÉ豸£¬urlStrΪÍøÖ·,´«Öµ´ú±í³É¹¦Óë·ñ '======================================================= Public Function OpenURL(urlStr As String, Optional hwnd As Long) As Boolean OpenMusic = False Dim MciCommand As String Dim DriverID As String CloseMusic 'MCIÃüÁî DriverID = GetDriverID(urlStr) If DriverID = "RealPlayer" Then PlayType = RealPlay Exit Function End If MciCommand = "open " & urlStr & " type " & DriverID & " alias NOWMUSIC" If DriverID = "AVIVideo" Or DriverID = "MPEGVideo" Or DriverID = "MPEGVideo2" Then If hwnd <> 0 Then MciCommand = MciCommand + " parent " & hwnd & " style child" hWndMusic = GetWindowHandle prevWndproc = GetWindowLong(hWndMusic, -4) SetWindowLong hWndMusic, -4, AddressOf WndProc Else MciCommand = MciCommand + " style overlapped " End If End If RefInt = mciSendString(MciCommand, vbNull, 0, 0) mciSendString "set NOWMUSIC time format milliseconds", vbNullString, 0, 0 If RefInt = 0 Then OpenMusic = True End Function '======================================================= '´ò¿ªMCIÉ豸£¬FILENAMEΪÎļþÃû,´«Öµ´ú±í³É¹¦Óë·ñ '======================================================= Public Function OpenMusic(FileName As String, Optional hwnd As Long) As Boolean OpenMusic = False Dim ShortPathName As String * 255 Dim RefShortName As String Dim RefInt As Long Dim MciCommand As String Dim DriverID As String CloseMusic '»ñÈ¡¶ÌÎļþÃû GetShortPathName FileName, ShortPathName, 255 RefShortName = Left(ShortPathName, InStr(1, ShortPathName, Chr(0)) - 1) 'MCIÃüÁî DriverID = GetDriverID(RefShortName) If DriverID = "RealPlayer" Then PlayType = RealPlay Exit Function End If MciCommand = "open " & RefShortName & " type " & DriverID & " alias NOWMUSIC" If DriverID = "AVIVideo" Or DriverID = "MPEGVideo" Or DriverID = "MPEGVideo2" Then If hwnd <> 0 Then MciCommand = MciCommand + " parent " & hwnd & " style child" hWndMusic = GetWindowHandle prevWndproc = GetWindowLong(hWndMusic, -4) SetWindowLong hWndMusic, -4, AddressOf WndProc Else MciCommand = MciCommand + " style overlapped " End If End If RefInt = mciSendString(MciCommand, vbNull, 0, 0) mciSendString "set NOWMUSIC time format milliseconds", vbNullString, 0, 0 If RefInt = 0 Then OpenMusic = True End Function Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = &H202 Then MsgBox "OK" End If WndProc = CallWindowProc(prevWndproc, hwnd, Msg, wParam, lParam) End Function '======================================================= '¸ù¾ÝÎļþÃû£¬È·¶¨É豸 '======================================================= Public Function GetDriverID(ff As String) As String Select Case UCase(Right(ff, 3)) Case "MID", "RMI", "IDI" GetDriverID = "Sequencer" Case "WAV" GetDriverID = "Waveaudio" Case "ASF", "ASX", "IVF", "LSF", "LSX", "P2V", "WAX", "WVX", ".WM", "WMA", "WMX", "WMP" GetDriverID = "MPEGVideo2" Case ".RM", "RAM", ".RA" GetDriverID = "RealPlayer" Case Else GetDriverID = "MPEGVideo" End Select End Function '====================================================== '²¥·ÅÎļþ '====================================================== Public Function PlayMusic() As Boolean Dim RefInt As Long PlayMusic = False RefInt = mciSendString("play NOWMUSIC", vbNull, 0, 0) If RefInt = 0 Then PlayMusic = True End Function '====================================================== '»ñȡýÌåµÄ³¤¶È '====================================================== Public Function GetMusicLength() As Long Dim RefStr As String * 80 mciSendString "status NOWMUSIC length", RefStr, 80, 0 GetMusicLength = Val(RefStr) End Function '====================================================== '»ñÈ¡µ±Ç°²¥·Å½ø¶È '====================================================== Public Function GetMusicPos() As Long Dim RefStr As String * 80 mciSendString "status NOWMUSIC position", RefStr, 80, 0 GetMusicPos = Val(RefStr) End Function '====================================================== '»ñȡýÌåµÄµ±Ç°½ø¶È '====================================================== Public Function SetMusicPos(Position As Long) As Boolean Dim RefInt As Long SetMusicPos = False RefInt = mciSendString("seek NOWMUSIC to " & Position, vbNull, 0, 0) If RefInt = 0 Then SetMusicPos = True End Function '====================================================== 'ÔÝÍ£²¥·Å '====================================================== Public Function PauseMusic() As Boolean Dim RefInt As Long PauseMusic = False RefInt = mciSendString("pause NOWMUSIC", vbNull, 0, 0) If RefInt = 0 Then PauseMusic = True End Function '====================================================== '¹Ø±ÕýÌå '====================================================== Public Function CloseMusic() As Boolean Dim RefInt As Long CloseMusic = False RefInt = mciSendString("close NOWMUSIC", vbNull, 0, 0) If RefInt = 0 Then CloseMusic = True End Function '====================================================== 'ÉèÖÃÉùµÀ '====================================================== Public Function SetAudioSource(sAudioSource As AudioSource) As Boolean Dim RefInt As Long Dim strSource As String Select Case sAudioSource Case 1: strSource = "left" Case 2: strSource = "right" Case 0: strSource = "stereo" End Select SetAudioSource = False RefInt = mciSendString("setaudio NOWMUSIC source to " & strSource, vbNull, 0, 0) If RefInt = 0 Then SetAudioSource = True End Function '====================================================== 'È«ÆÁ²¥·Å '====================================================== Public Function PlayFullScreen() As Boolean Dim RefInt As Long PlayFullScreen = False RefInt = mciSendString("play NOWMUSIC fullscreen", vbNull, 0, 0) If RefInt = 0 Then PlayFullScreen = True End Function '===================================================== 'ÉèÖÃÉùÒô´óС '===================================================== Public Function SetVolume(Volume As Long) As Boolean Dim RefInt As Long SetVolume = False RefInt = mciSendString("setaudio NOWMUSIC volume to " & Volume, vbNull, 0, 0) If RefInt = 0 Then SetVolume = True End Function '===================================================== 'ÉèÖò¥·ÅËÙ¶È '===================================================== Public Function SetSpeed(Speed As Long) As Boolean Dim RefInt As Long SetSpeed = False RefInt = mciSendString("set NOWMUSIC speed " & Speed, vbNull, 0, 0) If RefInt = 0 Then SetSpeed = True End Function '==================================================== '¾²ÒôTrueΪ¾²Òô£¬FALSEΪȡÏû¾²Òô '==================================================== Public Function SetAudioOnOff(AudioOff As Boolean) As Boolean Dim RefInt As Long Dim OnOff As String SetAudioOff = False If AudioOff Then OnOff = "off" Else OnOff = "on" RefInt = mciSendString("setaudio NOWMUSIC " & OnOff, vbNull, 0, 0) If RefInt = 0 Then SetAudioOff = True End Function '==================================================== 'ÊÇ·ñÓлÃæTrueΪÓУ¬FALSEΪȡÏû '==================================================== Public Function SetWindowShow(WindowOff As Boolean) As Boolean Dim RefInt As Long Dim OnOff As String SetWindowShow = False If WindowOff Then OnOff = "show" Else OnOff = "hide" RefInt = mciSendString("window NOWMUSIC state " & OnOff, vbNull, 0, 0) If RefInt = 0 Then SetWindowShow = True End Function '==================================================== '»ñµÃµ±Ç°Ã½ÌåµÄ״̬ÊDz»ÊÇÔÚ²¥·Å '==================================================== Public Function IsPlaying() As Boolean Dim sl As String * 255 mciSendString "status NOWMUSIC mode", sl, Len(sl), 0 If Left(sl, 7) = "playing" Or Left(sl, 2) = "²¥·Å" Then IsPlaying = True Else IsPlaying = False End If End Function '==================================================== '»ñµÃ²¥·Å´°¿ÚµÄhandle '==================================================== Public Function GetWindowHandle() As Long Dim RefStr As String * 160 mciSendString "status NOWMUSIC window handle", RefStr, 80, 0 GetWindowHandle = Val(RefStr) End Function '==================================================== '»ñÈ¡DeviceID '==================================================== Public Function GetDeviceID() As Long GetDeviceID = mciGetDeviceID("NOWMUSIC") End Function |