' 播放指定磁盘中的视频文件 ' FilaName 为视频文件的文件名, FullScreen 为是否全屏幕播放, hwnd 为播放窗口的句柄 Function PlayVideo(ByVal FileName As String, ByVal FullScreen As Boolean, Optional ByVal hwnd As Long) As Boolean mciSendString "close video", 0, 0, 0 If hwnd = 0 Then mciSendString "open " & FileName & " alias video", 0, 0, 0 Else mciSendString "open " & FileName & " alias video parent " & hwnd & " style child", 0, 0, 0 End If mciSendString "set video time format ms", 0, 0, 0 PlayVideo = mciSendString("play video from 0 " & IIf(FullScreen, "fullscreen", ""), 0, 0, 0) End Function' 播放CD中指定的轨道的曲目 ' Action 为播放开关, Track 为指定的轨道(从头播放设为1) Function PlayCD(ByVal Action As PlaySwitch, Optional ByVal Track As Integer) As Boolean If Action = StartPlay Then Dim nCurrentTrack As Integer mciSendString "open cdaudio alias cd wait", 0&, 0, 0 ' 打开设备 mciSendString "set cd time format tmsf", 0&, 0, 0 ' 设置轨道时间格式(默认为毫秒) PlayCD = mciSendString("play cd from " & CStr(Track), 0&, 0, 0) ' 播放指定轨道的曲目 ElseIf Action = StopPlay Then mciSendString "stop cd wait", 0&, 0, 0 ' 停止播放 DoEvents ' 让 Windows 处理事件 PlayCD = mciSendString("close cd", 0&, 0, 0) ' 关闭设备 End If End Function' 播放资源文件中的.wav文件 ' ID 为.wav文件的标识号 Function PlayResSound(ByVal ID As Integer) As Boolean Dim SoundBuffer() As Byte SoundBuffer = LoadResData(ID, "CUSTOM") PlayResSound = sndPlaySound(SoundBuffer(0), SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY) End Function' 播放指定磁盘中的音乐文件(.wav或.mid或.mp3) ' Filename 为音乐文件的路径及文件名 Function PlaySound(ByVal FileName As String) As Boolean Dim cmd As String, exName As String exName = Right(FileName, 3) mciSendString "close " & exName, 0, 0, 0 cmd = "open " & FileName & " alias " & exName mciSendString cmd, 0, 0, 0 PlaySound = mciSendString("play " & exName, 0, 0, 0) End Function
生命 #If Win32 Then 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 Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long #ElseIf Win16 Then Private Declare Function mciSendString Lib "mmsystem" (ByVal lpstrCommand As String, ByVal lpstrReturnStr As Any, ByVal wReturnLen As Integer, ByVal hCallBack As Integer) As Long Private Declare Function sndPlaySound Lib "mmsystem.dll" (ByVal lpszSoundName As String, ByVal uFlags As Integer) As Integer #End If
' 播放指定磁盘中的视频文件
' FilaName 为视频文件的文件名, FullScreen 为是否全屏幕播放, hwnd 为播放窗口的句柄
Function PlayVideo(ByVal FileName As String, ByVal FullScreen As Boolean, Optional ByVal hwnd As Long) As Boolean
mciSendString "close video", 0, 0, 0
If hwnd = 0 Then
mciSendString "open " & FileName & " alias video", 0, 0, 0
Else
mciSendString "open " & FileName & " alias video parent " & hwnd & " style child", 0, 0, 0
End If
mciSendString "set video time format ms", 0, 0, 0
PlayVideo = mciSendString("play video from 0 " & IIf(FullScreen, "fullscreen", ""), 0, 0, 0)
End Function' 播放CD中指定的轨道的曲目
' Action 为播放开关, Track 为指定的轨道(从头播放设为1)
Function PlayCD(ByVal Action As PlaySwitch, Optional ByVal Track As Integer) As Boolean
If Action = StartPlay Then
Dim nCurrentTrack As Integer
mciSendString "open cdaudio alias cd wait", 0&, 0, 0 ' 打开设备
mciSendString "set cd time format tmsf", 0&, 0, 0 ' 设置轨道时间格式(默认为毫秒)
PlayCD = mciSendString("play cd from " & CStr(Track), 0&, 0, 0) ' 播放指定轨道的曲目
ElseIf Action = StopPlay Then
mciSendString "stop cd wait", 0&, 0, 0 ' 停止播放
DoEvents ' 让 Windows 处理事件
PlayCD = mciSendString("close cd", 0&, 0, 0) ' 关闭设备
End If
End Function' 播放资源文件中的.wav文件
' ID 为.wav文件的标识号
Function PlayResSound(ByVal ID As Integer) As Boolean
Dim SoundBuffer() As Byte
SoundBuffer = LoadResData(ID, "CUSTOM")
PlayResSound = sndPlaySound(SoundBuffer(0), SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY)
End Function' 播放指定磁盘中的音乐文件(.wav或.mid或.mp3)
' Filename 为音乐文件的路径及文件名
Function PlaySound(ByVal FileName As String) As Boolean
Dim cmd As String, exName As String
exName = Right(FileName, 3)
mciSendString "close " & exName, 0, 0, 0
cmd = "open " & FileName & " alias " & exName
mciSendString cmd, 0, 0, 0
PlaySound = mciSendString("play " & exName, 0, 0, 0)
End Function
#If Win32 Then
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
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
#ElseIf Win16 Then
Private Declare Function mciSendString Lib "mmsystem" (ByVal lpstrCommand As String, ByVal lpstrReturnStr As Any, ByVal wReturnLen As Integer, ByVal hCallBack As Integer) As Long
Private Declare Function sndPlaySound Lib "mmsystem.dll" (ByVal lpszSoundName As String, ByVal uFlags As Integer) As Integer
#End If
是别人的机器,等我装上finaldata时发现已经被覆盖了,要不然就不用来问了,
最好知道是怎么实现xp窗体的,
不会支持rm,还需要别的api,
会不会是用了资源文件?VB写出的程序几千行代码也不到100K呀。
4500行能干什么呢?自己想吧!谁说ASF不支持?谁说RM不支持?Win98下放的好好的,甚至它还支持网络!(不过一切到了XP里,好像有点问题,死XP,Kill It!)若不考虑界面的话,VB应该能做到全功能播放<100K顺便问一下,你说的那个程序,也是VB编的?
会不会是用了资源文件?VB写出的程序几千行代码也不到100K呀。
2000
没用资源文件,软盘上只有一个197k的exe//顺便问一下,你说的那个程序,也是VB编的?
是的,vb,所以我猜2000系统里肯定带有这些api
要不你看看豆子的文档吧,有一个程序是看你的程序中有没有资源文件的。
资源文件和代码编译出来的是一个文件呀。
你试试把Program Files\Common Files下的Real库删掉,再用它来放,若还能放,就确定了肯定不是MCI(目前,我一个很小的简化配置,Real库就有200多个文件,近30M,一张软盘?是ZIP吧。另外,微软的媒体控制的接口,是可以支持RM的,网上有的是这样的插件,并不大,一般小于5M
再找个QT的插件,微软的媒体播放就能支持所有的格式了(前提要升到9。0) ,编程者就简单多了(我就不用RealOne控件,难看死了)就像初始Win98下的MCI是不支持WMA的,但媒体播放器升到7。0以上,就支持了,而代码不用变。
所以对MCI来说,除了极少数的实时流媒体格式以外,只要系统的媒体播放器能放的,MCI都能放。我说它9成是用MCI编的(前提,系统已有Real的库)