加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

软件开发 英语学习播放器2010

发布时间:2020-12-16 23:12:29 所属栏目:大数据 来源:网络整理
导读:“英语学习播放器2010”的开发过程 这个软件的开发,源于我学外语的时候,遇到的困难: 1:学外语,最大的问题是什么?是听力!但是常规的磁带、mp3、电影都有个问题,要想反反复复听某一句,不好定位。 2:练听力,有磁带,mp3,电影,那个最好?是电影!复
“英语学习播放器2010”的开发过程
这个软件的开发,源于我学外语的时候,遇到的困难:
1:学外语,最大的问题是什么?是听力!但是常规的磁带、mp3、电影都有个问题,要想反反复复听某一句,不好定位。
2:练听力,有磁带,mp3,电影,那个最好?是电影!复读机可以不断重复,但是又不是影像的,不容易坚持。
我当年看电影《功夫熊猫》(中英双语)的时候,有些句子很快,使用暴风影音播放的时候,不断拉动进度条,因为一句话说得快的时候,就是几秒钟的功夫,在一个几十分钟的电影里,不容易定位,所以就开发了这个工具。
先介绍一下功能:
“打开”:打开英语电影,如“功夫熊猫.rmvb”(也可以右键选中“功夫熊猫.rmvb”,点“英语学习播放器2010”)

“清空”:删除“播放列表”全部的时间段
“删除”:删除“播放列表”当前的时间段
“播放”:循环播放“播放列表”当前的时间段

“向前”:倒退3秒播放
“向后”:快进3秒播放
“右键”:将“英语学习播放器”加到右键菜单

如播放英语电影至第5至8秒:
1:“开始”输入5
2:“结束”输入8
3:点“循环”,循环播放5-8秒内容
4:点“继续”,不循环播放了
5:点“保存”,将“5,8”保存至ini文件,下次播放时,可以自动播放这个时间段,无需重新输入这个时间段,对英语电影部分听不清楚的地方,尤其有用
下面是VB6源代码:
Option Explicit
Option Base 1
Dim T1 As Date
Dim VScroll1Value As Long
Dim nFileNo As Long
Dim strFileName As String
Dim strFileNameini As String
Dim i As Long
Dim Combo3_Text As String
Dim bCombo3 As Boolean
Dim strpath As String
Const HKEY_CLASSES_ROOT = &H80000000
Const ERROR_SUCCESS = 0&
Const REG_SZ = 1
Const SW_SHOW = 5
Private Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineA" () As String
Private Declare Function GetCurrentTime Lib "kernel32" Alias "GetTickCount" () As Long
Private Declare Function OSRegCreateKey Lib "Advapi32" Alias "RegCreateKeyA" (ByVal hKey As Long,ByVal lpszSubKey As String,phkResult As Long) As Long
Private Declare Function OSRegSetValueEx Lib "Advapi32" Alias "RegSetValueExA" (ByVal hKey As Long,ByVal lpszValueName As String,ByVal dwReserved As Long,ByVal fdwType As Long,lpbData As Any,ByVal cbData As Long) As Long
Private Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long,ByVal lpOperation As String,ByVal lpFile As String,ByVal lpParameters As String,ByVal lpDirectory As String,ByVal nShowCmd As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub cmdPlay_Click() '播放
Dim tmpPos1 As Long
tmpPos1 = InStr(1,Combo3.Text,",")
If tmpPos1 > 1 Then
Text1.Text = Left(Combo3.Text,tmpPos1 - 1)
Text2.Text = Mid(Combo3.Text,tmpPos1 + 1)
Call Command6_Click
End If
'MsgBox Combo3.Text
End Sub
Private Sub cmdSave_Click()
Dim tmpStr1 As String
Dim tmpStr2 As String
bCombo3 = False
If Not IsNumeric(Trim(Text1.Text)) Or Not IsNumeric(Trim(Text2.Text)) Then
Exit Sub
End If
For i = 0 To Combo3.ListCount - 1
Combo3.ListIndex = i
If Combo3.Text = Trim(Text1.Text) & "," & Trim(Text2.Text) Then
Exit Sub
End If
Next
'Combo3.AddItem Trim(Text1.Text) & "," & Trim(Text2.Text)
tmpStr1 = Space(6 - Len(Trim(Text1.Text))) + Trim(Text1.Text)
tmpStr2 = Space(6 - Len(Trim(Text2.Text))) + Trim(Text2.Text)
Combo4.AddItem Replace(tmpStr1 + "," + tmpStr2," ","0")
Timer2.Enabled = True
End Sub
Private Sub Combo1_Click()
' MsgBox Combo1.Text
End Sub
Private Sub Combo3_Click()
If Not bCombo3 Then Exit Sub
'MsgBox "Combo3_Click"
If Combo3_Text <> Combo3.Text Then
Call cmdPlay_Click
End If
bCombo3 = False
End Sub
Private Sub Combo3_DropDown()
'MsgBox "Combo3_DropDown"
bCombo3 = True
Combo3_Text = Combo3.Text
'MsgBox "Combo3_DropDown"
End Sub
Private Sub Command1_Click() '向前
'WindowsMediaPlayer1.Controls
'WindowsMediaPlayer1.Controls.currentPosition = CDate(Text1.Text) - CDate(Text2.Text) '
WindowsMediaPlayer1.Controls.currentPosition = WindowsMediaPlayer1.Controls.currentPosition - Val(Combo1.Text)
End Sub
Private Sub Command10_Click()

If Text3.Visible Then
Text3.Text = ""
Timer3.Enabled = False
Text3.Visible = False

Else
Timer3.Enabled = True
Text3.Visible = True
End If
End Sub
Private Sub Command2_Click() '向后
WindowsMediaPlayer1.Controls.currentPosition = WindowsMediaPlayer1.Controls.currentPosition + Val(Combo2.Text)
End Sub
Private Sub Command3_Click()
CommonDialog1.Filter = "所有文件 (*.*)|*.*|rmvb(*.rmvb)|*.rmvb|rm(*.rm)|*.rm|wmv(*.wmv)|*.wmv|avi(*.avi)|*.avi|mp3(*.mp3)|*.mp3|asf(*.asf)|*.asf"
'指定缺省过滤器。
CommonDialog1.FilterIndex = 1
'显示“打开”对话框。
CommonDialog1.ShowOpen
'调用打开文件的过程。
'MsgBox CommonDialog1.FileName & vbCrLf & strFileName

If strFileName = CommonDialog1.FileName Then '防止打开现在播放中的电影
Exit Sub
End If
strFileName = CommonDialog1.FileName
'Me.Caption = strFileName
Call GetININame
End Sub
Private Sub Command4_Click()
Timer1.Enabled = False
'Text1.Text = "开始"
'Text2.Text = "结尾"
End Sub
Private Sub Command5_Click() '清空
If MsgBox("真的要删除播放列表?",vbCritical,"提示") = vbOK Then
Combo3.Clear
'Call SaveCombo3
End If
End Sub
Private Sub Command6_Click()
'If Command6.Caption = "循环" Then
' Command6.Caption = "不循环"
'Timer1.Enabled = False
'Text1.Text = "开始"
'Text2.Text = "结尾"
'ElseIf Command6.Caption = "不循环" Then
'Command6.Caption = "循环"
If Trim(Text1.Text) = "" And Trim(Text2.Text) = "" Or Trim(Text1.Text) = "0" And Trim(Text2.Text) = "0" Then
Text1.Text = "0"
Text2.Text = WindowsMediaPlayer1.currentMedia.duration - 0.3
End If
WindowsMediaPlayer1.Controls.currentPosition = Val(Text1.Text)
Timer1.Enabled = True
WindowsMediaPlayer1.Controls.play
'Text1.Text = "Click here to get the time for starting play"
'Text2.Text = "Click here to get the time for endding play"
'End If
End Sub

Private Sub xzPaiXu(a() As Double,sheng As Boolean)
'a为需要排序的数组,sheng为True则为升序排列,为False,则为降序排列。
Dim i As Integer,j As Integer
Dim temp As Double
Dim m As Integer
For i = LBound(a) To UBound(a) - 1 '进行数组大小-1轮比较
m = i '在第i轮比较时,假定第
'i个元素为最值元素
For j = i + 1 To UBound(a) '在剩下的元素中找出最
'值元素的下标并记录在m中
If sheng Then '若为升序,则m记录最小元素
'下标,否则记录最大元素下标
If a(j) < a(m) Then m = j
Else
If a(j) > a(m) Then m = j
End If
Next j '将最值元素与第i个元素交换
temp = a(i)
a(i) = a(m)
a(m) = temp
Next i
End Sub
'调用该过程示例:
'
Private Sub Command7_Click0()
'Text3.Text = ""
Dim b(6) As Double
b(1) = 8
b(2) = 6
b(3) = 6
b(4) = 3
b(5) = 2
b(6) = 7
'Call xzPaiXu(b,True)
Call Quicksort(b,1,6)
For i = 1 To UBound(b)

' Text3.Text = Text3.Text & b(i) & vbCrLf
Next
End Sub

Sub Quicksort(List() As Double,min As Integer,max As Integer)
Dim med_value As Long
Dim hi As Integer
Dim lo As Integer
Dim i As Integer
' If the list has no more than 1 element,it's sorted.
If min >= max Then Exit Sub
' Pick a dividing item.
i = Int((max - min + 1) * Rnd + min)
med_value = List(i)
' Swap it to the front so we can find it easily.
List(i) = List(min)
' Move the items smaller than this into the left
' half of the list. Move the others into the right.
lo = min
hi = max
Do
' Look down from hi for a value < med_value.
Do While List(hi) >= med_value
hi = hi - 1
If hi <= lo Then Exit Do
Loop
If hi <= lo Then
List(lo) = med_value
Exit Do
End If
' Swap the lo and hi values.
List(lo) = List(hi)

' Look up from lo for a value >= med_value.
lo = lo + 1
Do While List(lo) < med_value
lo = lo + 1
If lo >= hi Then Exit Do
Loop
If lo >= hi Then
lo = hi
List(hi) = med_value
Exit Do
End If
' Swap the lo and hi values.
List(hi) = List(lo)
Loop
' Sort the two sublists
Quicksort List(),min,lo - 1
Quicksort List(),lo + 1,max
End Sub

Private Sub Command7_Click()
Call RegMedia
End Sub

Private Sub Command9_Click() '删除
Dim tmpStr As String
Dim tmpStr1 As String
Dim tmpStr2 As String
Dim Combo3_ListIndex As Long
Dim tmpPos1 As Long
Dim tmpPos2 As Long

Combo3_ListIndex = Combo3.ListIndex
If Combo3_ListIndex > -1 And Combo3_ListIndex < Combo3.ListCount Then
tmpStr = Trim(Combo3.Text)
tmpPos1 = InStr(1,tmpStr,")
If tmpPos1 > 0 Then
tmpStr1 = Left(tmpStr,tmpPos1 - 1)
tmpStr2 = Mid(tmpStr,tmpPos1 + 1)
tmpStr1 = Space(6 - Len(tmpStr1)) + tmpStr1
tmpStr2 = Space(6 - Len(tmpStr2)) + tmpStr2
tmpStr = Replace(tmpStr1 + ","0")
For i = 0 To Combo4.ListCount - 1
Combo4.ListIndex = i
If Combo4.Text = tmpStr Then
Combo4.RemoveItem (i)
Exit For
End If
Next


Combo3.RemoveItem (Combo3.ListIndex)
End If
End If
If Combo3_ListIndex > (Combo3.ListCount - 1) Then
Combo3.ListIndex = Combo3.ListCount - 1
Else
Combo3.ListIndex = Combo3_ListIndex
End If
'写入到ini文件
Call SaveCombo3
End Sub
Private Sub Form_Load()
Combo3_Text = ""
Combo4.Visible = False
Text1.Text = "开始"
Text2.Text = "结尾"
T1 = Now()
Dim tmpCommand As String
'tmpStr = GetCommandLine()
strFileName = Command '这个就是使得exe可以打开一个媒体文件
'MsgBox strFileName
'If strFileName <> "" Then
If Trim(strFileName) = "" Then Exit Sub
'去除文件名两边的双引号(如果存在的话)
If (Left$(strFileName,1) = """") And (Right$(strFileName,1) = """") Then
strFileName = Mid$(strFileName,2,Len(strFileName) - 2)
End If
WindowsMediaPlayer1.URL = strFileName
WindowsMediaPlayer1.Controls.play
Timer1.Enabled = False
Call GetCombo1
Text3.ForeColor = vbRed

strFileName = Command$()
'MsgBox strFileName ': End
'Me.Caption = strFileName
If strFileName <> "" Then
Call GetININame
End If
End Sub
Private Sub Form_Resize()
'FormResize
' Command1.Height = Me.Height - 500
' Command1.Width = Me.Width
WindowsMediaPlayer1.Left = 0
WindowsMediaPlayer1.Top = 0
WindowsMediaPlayer1.Height = Me.Height - 450
WindowsMediaPlayer1.Width = Me.Width
Frame1.Top = WindowsMediaPlayer1.Height - (Frame1.Height + 80)
Frame1.Left = Me.Width - (Frame1.Width + 200)

Text3.Top = Frame1.Top - Text3.Height - 300
Text3.Left = WindowsMediaPlayer1.Left + WindowsMediaPlayer1.Width - Text3.Width - 200

End Sub
Private Sub Text1_Click()
Text1.Text = Int(WindowsMediaPlayer1.Controls.currentPosition)
End Sub
Private Sub Text2_Click()
Text2.Text = Int(WindowsMediaPlayer1.Controls.currentPosition)
End Sub
Private Sub Timer1_Timer()
'Text1.Text = WindowsMediaPlayer1.Controls.currentPositionString
'Text1.Text = WindowsMediaPlayer1.Controls.currentPosition
If Val(Trim(Text2.Text)) = 0 Then Exit Sub
If Val(Trim(Text1.Text)) > Val(Trim(Text2.Text)) Then Exit Sub
If WindowsMediaPlayer1.Controls.currentPosition > Val(Text2.Text) Then
WindowsMediaPlayer1.Controls.stop
WindowsMediaPlayer1.Controls.currentPosition = Val(Text1.Text)
WindowsMediaPlayer1.Controls.play
End If
End Sub
Private Sub VScroll1_Change()
'If Val(Text2.Text) - 'VScroll1.Value > 0 Then

'If 'VScroll1.Value = 0 Then
' 'VScroll1.Value = 1
' VScroll1Value = 'VScroll1.Value
'End If Val(Text2.Text) - VScroll1Value +
'Text2.Text = 'VScroll1.Value
' Text2.Text = 'VScroll1.Value
'End If
End Sub

Private Sub GetCombo1()
Combo1.AddItem "3"
Combo1.AddItem "5"
Combo1.AddItem "8"
Combo1.AddItem "10"
Combo1.AddItem "15"
Combo1.AddItem "20"
Combo1.AddItem "25"
Combo1.AddItem "30"
Combo1.AddItem "35"
Combo1.AddItem "40"
Combo1.AddItem "45"
Combo1.AddItem "50"
Combo1.AddItem "55"
Combo1.AddItem "60"
Combo1.ListIndex = 0

Combo2.AddItem "3"
Combo2.AddItem "5"
Combo2.AddItem "8"
Combo2.AddItem "10"
Combo2.AddItem "15"
Combo2.AddItem "20"
Combo2.AddItem "25"
Combo2.AddItem "30"
Combo2.AddItem "35"
Combo2.AddItem "40"
Combo2.AddItem "45"
Combo2.AddItem "50"
Combo2.AddItem "55"
Combo2.AddItem "60"
Combo2.ListIndex = 0
End Sub

Private Sub FormResize()
'Me.MaxButton.Click
WindowsMediaPlayer1.Top = Form1.Top
WindowsMediaPlayer1.Left = Me.Left
WindowsMediaPlayer1.Height = Me.Height - 500
WindowsMediaPlayer1.Width = Me.Width

Command1.Top = WindowsMediaPlayer1.Height - 500
Command1.Left = WindowsMediaPlayer1.Width - 5500

Command2.Top = Command1.Top
Command2.Left = Command1.Left + Command1.Width + 100

Command3.Top = Command1.Top
Command3.Left = Command1.Left - Command3.Width - 100

Combo1.Top = Command1.Top + 80
Combo1.Left = Command1.Left + 500

Combo2.Top = Command2.Top + 80
Combo2.Left = Command2.Left + 500
End Sub
Private Sub GetCombo300()
Dim tmpStr As String
Dim tmpPos1 As Long
nFileNo = FreeFile
Open strFileNameini For Input As #nFileNo
Do While Not EOF(nFileNo)
Line Input #nFileNo,tmpStr
If Len(Trim(tmpStr)) > 2 Then
tmpPos1 = InStr(1,")
If tmpPos1 > 1 Then
If IsNumeric(Left(tmpStr,tmpPos1 - 1)) Then
If IsNumeric(Mid(tmpStr,tmpPos1 + 1)) Then
Combo3.AddItem Trim(Replace(tmpStr,"))
End If
End If
End If
End If
DoEvents
Loop
Close #nFileNo
If Combo3.ListCount > 0 Then
Combo3.ListIndex = 0
End If
End Sub
Private Sub GetCombo3()
Dim tmpStr As String
Dim tmpStr1 As String
Dim tmpStr2 As String

Dim tmpPos1 As Long
Dim tmpPos2 As Long
Timer2.Enabled = False
If Combo4.ListCount > 0 Then
Combo3.Clear
Combo3.Refresh
For i = 0 To Combo4.ListCount - 1
'i = 0

Combo4.ListIndex = i
tmpStr = Trim(Combo4.Text)
'MsgBox tmpStr
tmpPos1 = InStr(1,")
'MsgBox tmpPos1
If tmpPos1 > 0 Then
tmpStr1 = Trim(Str(Val(Left(tmpStr,tmpPos1 - 1))))
tmpStr2 = Trim(Str(Val(Mid(tmpStr,tmpPos1 + 1))))
'Combo5.AddItem tmpStr1 + "," + tmpStr2
Combo3.AddItem tmpStr1 + "," + tmpStr2
End If
Next
If Combo3.ListCount > 0 Then
Combo3.ListIndex = 0
End If
'If Combo5.ListCount > 0 Then
' Combo5.ListIndex = 0
'End If
Call SaveCombo3
End If
End Sub
Private Sub GetCombo4()
Dim tmpStr As String
Dim tmpStr1 As String
Dim tmpStr2 As String

Dim tmpPos1 As Long
Dim tmpPos2 As Long
Dim bCombo4 As Boolean

nFileNo = FreeFile
Open strFileNameini For Input As #nFileNo
Combo4.Clear
Do While Not EOF(nFileNo)
Line Input #nFileNo,tmpStr
bCombo4 = False
If Len(Trim(tmpStr)) > 2 Then
tmpPos1 = InStr(1,")
If tmpPos1 > 1 Then
tmpStr1 = Left(tmpStr,tmpPos1 + 1)
If IsNumeric(tmpStr1) Then
If IsNumeric(tmpStr2) Then
tmpStr1 = Space(6 - Len(tmpStr1)) + tmpStr1
tmpStr2 = Space(6 - Len(tmpStr2)) + tmpStr2
tmpStr = Replace(tmpStr1 + ","0")
'For i = 0 To Combo4.ListCount - 1
' Combo4.ListIndex = i
' If Combo4.Text = tmpStr Then
' bCombo4 = True
' Exit For
' End If
'Next
'If Not bCombo4 Then
Combo4.AddItem tmpStr
'End If
End If
End If
End If
End If
DoEvents
Loop
Close #nFileNo
If Combo4.ListCount > 0 Then
Combo4.ListIndex = 0
End If
Timer2.Enabled = True
End Sub
Private Sub SaveCombo3()
nFileNo = FreeFile
Open strFileNameini For Output As #nFileNo
If Combo3.ListCount > 0 Then
For i = 0 To Combo3.ListCount - 1
Combo3.ListIndex = i
Print #nFileNo,Combo3.Text
Next
Combo3.ListIndex = 0
Else
Print #nFileNo,""
End If
Close #nFileNo
End Sub

Private Sub Timer2_Timer()
Call GetCombo3
End Sub
Public Sub RegMedia()
On Error Resume Next

Dim ret1 As Long,hKey As Long,hkey1 As Long,strdata As String
Dim tmpFileNo As Long
Kill "c:1.reg"

tmpFileNo = FreeFile
Open "c:1.reg" For Output As tmpFileNo
Print #tmpFileNo,"Windows Registry Editor Version 5.00"
Print #tmpFileNo,""
Print #tmpFileNo,"[HKEY_CLASSES_ROOT*shell英语学习播放器2010command]"
Print #tmpFileNo,"@=""" & Replace(App.Path,"","") & "英语学习播放器2010.exe %1"""
Close #tmpFileNo


strdata = "英语学习播放器2010"
ret1 = OSRegCreateKey(HKEY_CLASSES_ROOT,".swf",hKey)
ret1 = OSRegSetValueEx(hKey,"",0&,REG_SZ,ByVal strdata,LenB(StrConv(strdata,vbFromUnicode)) + 1)

ret1 = OSRegCreateKey(HKEY_CLASSES_ROOT,"英语学习播放器2010",hKey)
strdata = "英语学习播放器2010"
ret1 = OSRegSetValueEx(hKey,vbFromUnicode)) + 1)
ret1 = OSRegCreateKey(hKey,"DefaultIcon",hkey1)
strdata = App.Path & "英语学习播放器2010.exe,0" '应根据具体情况更改路径
ret1 = OSRegSetValueEx(hkey1,"shell",hKey)
ret1 = OSRegCreateKey(hKey,"open","command",hkey1)
strdata = App.Path & "英语学习播放器2010.exe" & Chr(34) & "%1" & Chr(34)
ret1 = OSRegSetValueEx(hkey1,vbFromUnicode)) + 1)
'Debug.Print hKey

ret1 = OSRegCreateKey(HKEY_CLASSES_ROOT,".rm",vbFromUnicode)) + 1)
'Debug.Print hKey


ret1 = OSRegCreateKey(HKEY_CLASSES_ROOT,".rmvb",".wmv",".asf",".mp3",".avi",vbFromUnicode)) + 1)
'Debug.Print hKey
Shell "regedit.exe /s c:1.reg"
Kill "c:1.reg"
End Sub
Private Sub Timer3_Timer()
Text3.Text = Val(Trim(Text3.Text)) + 1
End Sub
Public Sub GetININame()

If strFileName <> "" Then
Dim tmpPos1 As Long
Text1.Text = ""
Text2.Text = ""
Combo3.Clear
Combo3.Refresh
tmpPos1 = InStrRev(strFileName,".")
strFileNameini = Left(strFileName,tmpPos1) + "ini"
If Dir(strFileNameini) <> "" Then
'Call GetCombo3
Call GetCombo4 Else Combo4.Clear Combo4.Refresh End If WindowsMediaPlayer1.URL = strFileName WindowsMediaPlayer1.Controls.play End If End Sub

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读