vb 中用 wmp.dll 控件制作媒体播放器时遇到的几个问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 06:30:24
我的毕业设计是用VB做个媒体播放器,用的是WindowsMediaPlayer控件(控件名为wmp.dll)
大家注意一下,不是MCI控件也不是MXDSM控件哈!!!

现在遇到几个问题:

1.载入一个媒体文件后,怎样获取媒体总时间长度?
我试过用wmp.currentMedia.duration和wmp.currentMedia.durationString 显示是时间是0, wmp.currentMedia.getItemInfo("Duration")也不行

2.用WPM控件播放时无法响应KEY_DOWN(我想用空格控制播放暂停)

3.用wmp.settings.balance属性控制左右声道时,可是有些文件行有些不行

4.如何知道视频文件的长宽信息?(找了半天找不到……)

5.wpm控件中是否有前端显示和开关光驱仓门的函数?(我不想用API实现)

6.如何CALL不同窗口的模块,比如我想在FORM2里CALL FORM1中的COMMAND1,如何实现?

7.怎样知道播放是否完成?好象是EndOfStream吧,怎么用?

分数不是问题,重要的是我的毕业设计能按时完成
问题保留10天,谢谢大家帮我^_^
果然播放开了信息都能加载了
第二问我自己解决了:我用的是KEY_DOWN响应的是KEY_CODE事件而不是KEYASCII,惭愧……
第六问……笨了,我居然没想到……

呵呵,说了保留10天的就要做到,至于分数,你放心吧^_^

大哥,字打得这么辛苦,可否送分了呢??

第一问: 为什么在我这儿就可以呢?(也许是你在播放器播放之前用了这一句,这个属性得用在该控件播放之后,所以我把代码放进这里):

Private Sub wmp_PlayStateChange(ByVal NewState As Long)
If NewState = 3 Then Text1.Text = wmp.currentMedia.durationString
End Sub

第二问: 我用Key_press做了试验,可以的(判断nkeyAscii是否等于32就行了)

第三问: 不会吧,我试了许多类型的文件,但都是可以的。
wmp.settings.balance = -100 '我用的是这一句,把它设成了左声道。

第四问:你指的是视频的原始长宽吧,那么可以用这几句:
wmp.Controls.currentItem.imageSourceHeight '这是原始宽度
wmp.Controls.currentItem.imageSourceWidth '这是原始长度
同理,上述语句必须是在播放器已经开始播放之后才能正常执行。

第五问:据我所知,没有……(十分遗憾)

第六问:把form1中的Private sub command1_click()改成public sub command1_click(),然后就可以在form2中用call form1.command1_click调用它了。

第七问:
Private Sub Wmp_PlayStateChange(ByVal NewState As Long)
If NewState = wmppsMediaEnded Then
Debug.Print "完了"
End If
End Sub <