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

gopark 2005-05-27 08:23:39
我的一个程序要放完一个MP3后关闭该窗体,
PlayMP3() '调用API播放MP3
Me.Close
现在是不等MP3放完,Me 就Close了,有办法解吗?
...全文
351 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来倒记时。
OFDM通信系统Python实现源码 本资源包提供了一套完整的正交频分复用通信系统仿真实现,采用Python编程语言开发。该实现涵盖了OFDM系统的主要构成模块,包括: 核心功能模块: - 基带信号生成与QAM调制解调单元 - 串并转换与循环前缀添加机制 - 快速傅里叶变换及其逆变换处理单元 - 多径信道建模与均衡算法实现 - 符号定时与载波同步误差补偿 技术特性: 系统采用离散傅里叶变换实现频域并行传输,通过插入循环前缀有效对抗多径时延扩展。信道编码部分采用卷积码与交织器相结合的设计方案,有效提升系统抗突发错误能力。同步模块包含精确定时同步和频偏估计补偿算法,确保系统在存在载波频率偏移和采样时钟偏差时仍能保持稳定工作。 实现细节: 代码结构采用模块化设计,各功能单元接口清晰明确。信道模型支持AWGN和多径瑞利衰落两种典型无线传输环境。性能评估模块可输出误码率曲线和星座图等关键指标,便于系统性能分析验证。 应用价值: 该实现可作为通信系统教学演示工具,也可为无线通信算法研究人员提供基础开发框架。所有源代码均采用标准Python语法编写,兼容主流科学计算库,具有较好的可移植性和扩展性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
【坚固型无人机结构分析】模块化多无人机配送系统的设计与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕“坚固型无人机结构分析”展开,重点研究模块化多无人机配送系统的设计与控制,结合Matlab代码与Simulink仿真工具实现系统建模与控制算法验证。研究内容涵盖无人机结构强度分析、多机协同路径规划、任务分配、避障控制及系统鲁棒性优化,并融合模型预测控制(MPC)、非线性控制、协同编队等先进算法,提升无人机在复杂动态环境下的配送效率与安全性。同时,文中还涉及无人机姿态估计、动力学建模、能量管理及与其他运输方式(如卡车)协同优化的应用案例。; 适合人群:具备一定Matlab/Simulink编程基础,从事无人机系统设计、自动化控制、智能物流或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于多无人机系统在城市配送、应急物流等场景下的仿真与优化;②支持无人机结构设计与控制系统开发的教学与科研项目;③为无人机协同控制、路径规划与鲁棒性提升提供算法实现与仿真验证方案。; 阅读建议:建议结合文中提供的Matlab代码与Simulink模型进行实践操作,重点关注控制算法的实现细节与仿真参数设置,同时可扩展应用于其他多智能体系统的研究。

16,721

社区成员

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

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