熟悉axWindowsMediaPlayer控件的请进

cocoguo 2006-01-24 12:17:36
this.axWindowsMediaPlayer1.URL="k:\\asf\\abc.avi";
this.axWindowsMediaPlayer1.Ctlcontrols.play();
MessageBox.Show(axWindowsMediaPlayer1.currentMedia.duration.ToString());//总长度

我用上面的代码想得到这个文件有多长,但是为什么会是0,偶尔有一次就能得到正确结果.
...全文
198 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mystyle 2006-02-26
  • 打赏
  • 举报
回复
this.axWindowsMediaPlayer1.URL="K:\\asf\\abc.avi";
this.axWindowsMediaPlayer1.Ctlcontrols.play();
while(true)
{
Application.DoEvents();
if(this.axWindowsMediaPlayer1.currentMedia.duration>0)
break;
}
MessageBox.Show(this.axWindowsMediaPlayer1.currentMedia.durationString);

这样试下行不行
你的程序只有一个线程,循环会占用所有资源,加个doevents就可以了吧
cocoguo 2006-02-09
  • 打赏
  • 举报
回复
是C#代码,我先试下.
ablewindy 2006-02-06
  • 打赏
  • 举报
回复
你这是VB的代码还是C#的代码?
我是做VC的,用VC的话可以用一个线程去检测,不知你是否可以用线程检测?
cocoguo 2006-01-24
  • 打赏
  • 举报
回复
是要等一会才可以,下面的代码如果把MessageBox.Show(i.ToString());注释掉,就会陷入死循环,如果有上面一句代码就行,只弹出一次i=1就行了,就能得到这人文件的实际长度,
现在的问题是我要把MessageBox注释掉,不要这句代码,拿什么代替它,用thread.sleep不行的,
程序会停止这里一会.
this.axWindowsMediaPlayer1.URL="K:\\asf\\abc.avi";
this.axWindowsMediaPlayer1.Ctlcontrols.play();
int i=0;
while(true)
{
i++;
if(this.axWindowsMediaPlayer1.currentMedia.duration>0)
break;
MessageBox.Show(i.ToString());//如果把这句注释掉就不行了
}
MessageBox.Show(this.axWindowsMediaPlayer1.currentMedia.durationString);
ablewindy 2006-01-24
  • 打赏
  • 举报
回复
是不是你要过一段时间再获得?
也许现在还没有Play成功呢!

2,542

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧