100分相送,怎样让程序在上一行代码执行完成后再执行下一行代码呀...

gopark 2005-05-27 08:23:39
我的一个程序要放完一个MP3后关闭该窗体,
PlayMP3() '调用API播放MP3
Me.Close
现在是不等MP3放完,Me 就Close了,有办法解吗?
...全文
353 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zm864680106 2010-06-16
  • 打赏
  • 举报
回复
学习……
gopark 2005-05-27
  • 打赏
  • 举报
回复
都是牛人啊,崇拜中...
100分已不足已表达我对诸位的滔滔江水,中午我会再开一送分贴,敬请留意...
Snrmnm_sx 2005-05-27
  • 打赏
  • 举报
回复
这是之前的相关声明
Option Strict Off
Option Explicit On
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports System.IO
Imports VB = Microsoft.VisualBasic

这个小程序经调试通过!环境为:WINDOWS XP 5.1 .NET 2003
Snrmnm_sx 2005-05-27
  • 打赏
  • 举报
回复
接着上楼的!
Private Sub Form1_Closed(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Closed
Dim i As Short
For i = 0 To List1.Items.Count - 1
Call INIWriteString("列表框", "歌曲" & i, VB6.GetItemString(List1, i), VB6.GetPath & "\song.ini")
Next i
End Sub

Private Sub List1_DoubleClick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles List1.DoubleClick
Call Command1_Click(Command1, New System.EventArgs)
End Sub

Private Sub MPlayer1_EndOfStream(ByVal result As Integer)
Dim i As Short
i = List1.SelectedIndex
i = i + 1
If i > List1.Items.Count - 1 Then i = 0
List1.SelectedIndex = i
MPlayer1.FileName = VB6.GetItemString(List1, List1.SelectedIndex)
Call Read_TAG(MPlayer1.FileName, s1, s2, s3, s4, s5, s6) : Call Show_Tag()
Label4.Text = Text1(0).Text
End Sub

Sub Show_Tag()
Text1(0).Text = s1 '歌名
Text1(1).Text = s2 '歌星
Text1(2).Text = s3 '专辑
Text1(3).Text = s4 '出版年
Text1(4).Text = s5 '说明
Text1(5).Text = CStr(s6) '校验码
End Sub

Private Sub Slider1_Scroll(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Slider1.Scroll
MPlayer1.Volume = Slider1.Value - 2500
End Sub

Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
Dim d1, d2 As Short
Dim m1, s1 As Short
Dim m2, s2 As Short
d1 = MPlayer1.CurrentPosition
d2 = MPlayer1.Duration

m1 = d1 \ 60
s1 = d1 Mod 60
m2 = d2 \ 60
s2 = d2 Mod 60

Label3.Text = m1 & ":" & VB6.Format(s1, "00") & " (" & m2 & ":" & VB6.Format(s2, "00") & ")"
End Sub

Private Sub Timer2_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer2.Tick
If VB6.PixelsToTwipsX(Label4.Left) < 0 - VB6.PixelsToTwipsX(Label4.Width) Then

Label4.Left = VB6.TwipsToPixelsX(VB6.PixelsToTwipsX(Picture1.Width) - 1)
Label4.Left = VB6.TwipsToPixelsX(VB6.PixelsToTwipsX(Label4.Left) - 5)
Else
Label4.Left = VB6.TwipsToPixelsX(VB6.PixelsToTwipsX(Label4.Left) - 10)
End If
End Sub

Function Read_TAG(ByRef fname As String, ByRef 歌名 As String, ByRef 歌星 As String, ByRef 专辑名称 As String, ByRef 出版年 As String, ByRef 说明 As String, ByRef 校验码 As Byte)
Dim i As Short, j As Short
Dim k As String
i = FreeFile()

Dim x(127) As Byte

FileOpen(i, fname, OpenMode.Binary, OpenAccess.Read)
'跳到倒数第128位元组
Seek(i, LOF(i) - 127)
'读取127个字符
FileGet(i, x)
'关闭文件
FileClose(i)
If LCase(Chr(x(0)) & Chr(x(1)) & Chr(x(2))) <> "tag" Then
Read_TAG = False
歌名 = ""
歌星 = ""
专辑名称 = ""
出版年 = ""
说明 = ""
校验码 = 0
Exit Function
End If

歌名 = ""
For j = 3 To 32
If x(j) < 128 Then k = Chr(x(j)) Else k = Chr("&H" + Hex(x(j)) + Hex(x(j + 1))) : j = j + 1
歌名 = 歌名 + k
Next
歌星 = ""
For j = 33 To 62
If x(j) < 128 Then k = Chr(x(j)) Else k = Chr("&H" + Hex(x(j)) + Hex(x(j + 1))) : j = j + 1
歌星 = 歌星 + k
Next
专辑名称 = ""
For j = 63 To 92
If x(j) < 128 Then k = Chr(x(j)) Else k = Chr("&H" + Hex(x(j)) + Hex(x(j + 1))) : j = j + 1
专辑名称 = 专辑名称 + k
Next
出版年 = ""
For j = 93 To 96
If x(j) < 128 Then k = Chr(x(j)) Else k = Chr("&H" + Hex(x(j)) + Hex(x(j + 1))) : j = j + 1
出版年 = 出版年 + k
Next
说明 = ""
For j = 97 To 126
If x(j) < 128 Then k = Chr(x(j)) Else k = Chr("&H" + Hex(x(j)) + Hex(x(j + 1))) : j = j + 1
说明 = 说明 + k
Next

校验码 = x(127)

Read_TAG = True
End Function

Function INIReadString(ByRef app As String, ByRef keyw As String, ByRef val_Renamed As String, ByRef inifile As String) As String
Dim i As Integer
Dim k As String
k = New String(" ", 255)
i = GetPrivateProfileString(app, keyw, val_Renamed, k, Len(k), inifile)
k = Trim(k) : k = VB.Left(k, Len(k) - 1)
INIReadString = k
End Function

Sub INIWriteString(ByRef app As String, ByRef keyw As String, ByRef val_Renamed As String, ByRef inifile As String)
Dim xx As Short
xx = WritePrivateProfileString(app, keyw, val_Renamed, inifile)
End Sub
Snrmnm_sx 2005-05-27
  • 打赏
  • 举报
回复
兄弟这是我做的一个小播放器的代码,很简单,希望能帮上你的忙!
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Integer

Dim s2, s1, s3 As String
Dim s4, s5 As String
Dim s6 As Byte

Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
If List1.SelectedIndex < 0 Then List1.SelectedIndex = 0
Call Read_TAG(VB6.GetItemString(List1, List1.SelectedIndex), s1, s2, s3, s4, s5, s6) : Call Show_Tag()
MPlayer1.FileName = VB6.GetItemString(List1, List1.SelectedIndex)
MPlayer1.Play()
Label4.Text = Text1(0).Text
Picture1.Visible = True : Timer2.Enabled = True

End Sub

Private Sub Command2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command2.Click
MPlayer1.Stop()
Picture1.Visible = False : Timer2.Enabled = False

End Sub

Private Sub Command3_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command3.Click
Try
Dim f As String
Dim Result As Windows.Forms.DialogResult
'设置对话框标题
OpenFileDialog1.Title = "打开文件"
'设置Filter文件筛选器
OpenFileDialog1.Filter = "MP3格式(*.MP3)|*.MP3|wav格式(*.wav)|*.wav|mid格式(*.mid)|*.mid|所有文件(*.*)|*.*"
'打开对话框,注意标准对话框都是有模式的打开
Result = OpenFileDialog1.ShowDialog()
'如果单击了“打开”按钮并且FileName不为空时,打开RichTextBox文件
If Result = DialogResult.OK And Len(OpenFileDialog1.FileName) > 0 Then
Me.Label1.Text = OpenFileDialog1.FileName
End If
If OpenFileDialog1.FileName <> "" Then
f = OpenFileDialog1.FileName
List1.Items.Add(f)
End If

'End With
Catch Exc As System.OverflowException
MsgBox("aaaaaaaaaaaa")
End Try

End Sub

Private Sub Command4_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command4.Click
If List1.SelectedIndex < 0 Then Exit Sub
List1.Items.RemoveAt(List1.SelectedIndex)
End Sub

Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
Dim i As Short
Dim s As String
MPlayer1.Visible = False
Slider1.Value = MPlayer1.Volume
For i = 0 To 32000
s = INIReadString("列表框", "歌曲" & i, "", VB6.GetPath & "\song.ini")
If s = "" Then Exit For
List1.Items.Add(s)
Next i
Me.Text = System.Reflection.Assembly.GetExecutingAssembly.GetName.Name
End Sub
淡蓝色2 2005-05-27
  • 打赏
  • 举报
回复
我不知道还有什么语言比VB.net2005更方便。
看 只需下面一条语句就能达到楼主的目的.

My.Computer.Audio.Play("XXXX.mp3", AudioPlayMode.WaitToComplete)
真相重于对错 2005-05-27
  • 打赏
  • 举报
回复
看看这个,对你有帮助

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemDiagnosticsProcessClassWaitForExitTopic.htm
tl_pear 2005-05-27
  • 打赏
  • 举报
回复
可以参照一下哦!
http://dev.csdn.net/develop/article/62/62047.shtm
ranzige 2005-05-27
  • 打赏
  • 举报
回复
可以考虑用一个timer
到了以后就me.close
gopark 2005-05-27
  • 打赏
  • 举报
回复
回楼上:
我就是想知道如何判断MP3已放完,API函数中好像没找到相关的方法和事件...
APP开发王 2005-05-27
  • 打赏
  • 举报
回复
PlayMP3() '调用API播放MP3
Me.Close

哎呀,你怎么搞的嘛,肯定不会等你播放完了才close嘛!
判断
方法是你的歌曲是否已经放完,再调用me.close!和楼上的差不多!
孟子E章 2005-05-27
  • 打赏
  • 举报
回复
播放器播放完毕后触发事件的,在这个事件里关闭
3tzjq 2005-05-27
  • 打赏
  • 举报
回复
最好是能得到播放文件所用时间的长度,然后用Timer来倒记时。
【太阳能电池系统与逆变器】太阳能电池的电压输出被储存在电池中,同时直流电压通过五级逆变器转换为交流电(Simulink仿真实现)内容概要:本文档围绕太阳能电池系统与逆变器展开,重点介绍了一个基于Simulink的仿真模型,其中太阳能电池产生的直流电压被储存于电池中,并通过五级逆变器转换为交流电。该系统仿真涵盖了光伏发电、储能管理和电力电子变换的核心环节,突出了多级逆变器在提升电能质量和转换效率方面的优势。文中详细描述了系统结构、工作原理及Simulink建模过程,有助于理解可再生能源系统的能量转换与控制策略。; 适合人群:具备一定电力电子、自动控制或新能源系统基础知识的高校学生、研究人员及工程技术人员。; 使用场景及目标:①用于教学演示太阳能发电系统的能量流动与转换过程;②支持科研中对多级逆变器拓扑结构的性能分析与优化设计;③为微电网、分布式能源系统中的储能与并网控制提供仿真基础。; 阅读建议:建议结合Simulink软件实际操作,深入理解模型各模块的功能与参数设置,并可通过修改逆变器级数或控制策略进行拓展性实验,以增强对系统动态响应和稳定性的认识。
内容概要:本文全面解析了全国大学生智能汽车竞赛的赛事定位、赛制安排与竞赛类别,并通过武汉大学、成都理工大学等高校的经典参赛案例,深入剖析了智能车在视觉识别、机械结构设计、算法优化等方面的创新实践。文章进一步梳理了智能车开发的核心技术体系,涵盖感知层的多传感器融合与视觉AI部署、决策控制中的路径规划与运动控制策略,以及软硬件平台的协同架构。最后,基于竞赛技术延伸出智能物流分拣车、越野巡检机器人、多模态智能识别平台等实际应用项目,展示了从赛事到产业落地的技术转化路径。; 适合人群:具备一定电子、控制、计算机或机械基础的高校学生及指导教师,尤其适合参与智能车竞赛或工程实践项目的1-3年经验研发人员; 使用场景及目标:①了解智能车竞赛的整体架构与备赛策略;②掌握视觉识别、多传感器融合、运动控制等关键技术的设计与实现方法;③探索竞赛成果向智能物流、无人巡检、安防识别等领域的产业化应用; 阅读建议:建议结合具体案例与技术模块进行系统学习,重点关注技术突破背后的创新思维与跨学科整合方法,同时可参考文中项目实践开展原型开发与成果转化。

16,720

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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