完全能满足你的要求:form控件自己放,这是代码 Dim Title As String * 30 Dim Artist As String * 30 Dim Album As String * 30 Dim Year As String * 4 Dim genre As Byte Dim Comment As String * 29 Dim TrckNum As BytePublic Sub genr() Dim genre(0 To 148) genre(0) = "Blues" genre(1) = "Classic Rock" genre(2) = "Country" genre(3) = "Dance" genre(4) = "Disco" genre(5) = "Funk" genre(6) = "Grunge" genre(7) = "Hip-Hop" genre(8) = "Jazz" genre(9) = "Metal" genre(10) = "New Age" genre(11) = "Oldies" genre(12) = "Other" genre(13) = "Pop" genre(14) = "R&B" genre(15) = "Rap" genre(16) = "Reggae" genre(17) = "Rock" genre(18) = "Techno" genre(19) = "Industrial" genre(20) = "Alternative" genre(21) = "Ska" genre(22) = "Death Metal" genre(23) = "Pranks" genre(24) = "Soundtrack" genre(25) = "Euro-Techno" genre(26) = "Ambient" genre(27) = "Trip-Hop" genre(28) = "Vocal" genre(29) = "Jazz+Funk" genre(30) = "Fusion" genre(31) = "Trance" genre(32) = "Classical" genre(33) = "Instrumental" genre(34) = "Acid" genre(35) = "House" genre(36) = "Game" genre(37) = "Sound Clip" genre(38) = "Gospel" genre(39) = "Noise" genre(40) = "Alternative Rock" genre(41) = "Bass" genre(42) = "Soul" genre(43) = "Punk" genre(44) = "Space" genre(45) = "Meditative" genre(46) = "Instrumental Pop" genre(47) = "Instrumental Rock" genre(48) = "Ethnic" genre(49) = "Gothic" genre(50) = "Darkwave" genre(51) = "Techno-Industrial" genre(52) = "Electronic" genre(53) = "Pop-Folk" genre(54) = "Eurodance" genre(55) = "Dream" genre(56) = "Southern Rock" genre(57) = "Comedy" genre(58) = "Cult" genre(59) = "Gangsta" genre(60) = "Top 40" genre(61) = "Christian Rap" genre(62) = "Pop/Funk" genre(63) = "Jungle" genre(64) = "Native US" genre(65) = "Cabaret" genre(66) = "New Wave" genre(67) = "Psychadelic" genre(68) = "Rave" genre(69) = "Showtunes" genre(70) = "Trailer" genre(71) = "Lo-Fi" genre(72) = "Tribal" genre(73) = "Acid Punk" genre(74) = "Acid Jazz" genre(75) = "Polka" genre(76) = "Retro" genre(77) = "Musical" genre(78) = "Rock & Roll" genre(79) = "Hard Rock" genre(80) = "Folk" genre(81) = "Folk-Rock" genre(82) = "National Folk" genre(83) = "Swing" genre(84) = "Fast Fusion" genre(85) = "Bebob" genre(86) = "Latin" genre(87) = "Revival" genre(88) = "Celtic" genre(89) = "Bluegrass" genre(90) = "Avantgarde" genre(91) = "Gothic Rock" genre(92) = "Progressive Rock" genre(93) = "Psychedelic Rock" genre(94) = "Symphonic Rock" genre(95) = "Slow Rock" genre(96) = "Big Band" genre(97) = "Chorus" genre(98) = "Easy Listening" genre(99) = "Acoustic" genre(100) = "Humour" genre(101) = "Speech" genre(102) = "Chanson" genre(103) = "Opera" genre(104) = "Chamber Music" genre(105) = "Sonata" genre(106) = "Symphony" genre(107) = "Booty Bass" genre(108) = "Primus" genre(109) = "Porn Groove" genre(110) = "Satire" genre(111) = "Slow Jam" genre(112) = "Club" genre(113) = "Tango" genre(114) = "Samba" genre(115) = "Folklore" genre(116) = "Ballad" genre(117) = "Power Ballad" genre(118) = "Rhytmic Soul" genre(119) = "Freestyle" genre(120) = "Duet" genre(121) = "Punk Rock" genre(122) = "Drum Solo" genre(123) = "Acapella" genre(124) = "Euro-House" genre(125) = "Dance Hall" genre(126) = "Goa" genre(127) = "Drum & Bass" genre(128) = "Club-House" genre(129) = "Hardcore" genre(130) = "Terror" genre(131) = "Indie" genre(132) = "BritPop" genre(133) = "Negerpunk" genre(134) = "Polsk Punk" genre(135) = "Beat" genre(136) = "Christian Gangsta" genre(137) = "Heavy Metal" genre(138) = "Black Metal" genre(139) = "Crossover" genre(140) = "Contemporary C" genre(141) = "Christian Rock" genre(142) = "Merengue" genre(143) = "Salsa" genre(144) = "Thrash Metal" genre(145) = "Anime" genre(146) = "Jpop" genre(147) = "SynthPop" genre(148) = "" For i = 0 To 148 frmId3.Combo1.AddItem genre(i), i Next i End SubPublic Sub Update(selectedFile As String) Dim B As String Dim A As String On Error GoTo hell: Open selectedFile For Binary Access Write As #1 savestate: Position = FileLen(selectedFile) - 128 start = Position + 4 Title = Trim(frmId3.txtTitle.Text) Put #1, start, Title B = Len(frmId3.txtTitle.Text) A = 30 - B For i = 0 To A Put #1, (start + B) + i, CByte(0) Next istart = start + 30 Artist = Trim(frmId3.txtArtist.Text) Put #1, start, Artist B = Len(frmId3.txtArtist.Text) A = 30 - B For i = 0 To A Put #1, (start + B) + i, CByte(0) Next istart = start + 30 Album = Trim(frmId3.txtAlbum.Text) Put #1, start, Album B = Len(frmId3.txtAlbum.Text) A = 30 - B For i = 0 To A Put #1, (start + B) + i, CByte(0) Next istart = start + 30 Year = frmId3.txtYear.Text Put #1, start, Year B = Len(frmId3.txtYear.Text) A = 30 - B For i = 0 To A Put #1, (start + B) + i, CByte(0) Next istart = start + 4 Comment = Trim(frmId3.txtComm.Text) Put #1, start, Comment B = Len(frmId3.txtComm.Text) A = 30 - B For i = 0 To A Put #1, (start + B) + i, CByte(0) Next istart = start + 29 If frmId3.txtTrck.Text = "" Then Put #1, start, CByte(0) Else TrckNum = CByte(frmId3.txtTrck.Text) Put #1, start, TrckNum End Ifstart = start + 1 For i = 0 To 148 If Combo1.ListIndex = i Then genre = i End If Next i Put #1, start, genre Close #1 Exit Sub hell: Dim mes mes = MsgBox("You can not modify this file while is playing...") Close #1End Sub
Public Sub Id3v1(selectedFile As String)Dim test As String * 3 Dim Detect As ByteIf frmId3.lblTest = "TAG" Then frmId3.cmdUpdate.Enabled = True openstate: Open selectedFile For Binary Access Read As #1 Position = FileLen(selectedFile) - 128Get #1, Position + 1, test frmId3.lblTest = testGet #1, FileLen(selectedFile), Detect lblDetect = DetectIf test = "TAG" ThenCheck1.Value = 1start = Position + 4 Get #1, start, Title frmId3.txtTitle.Text = Trim(Title)start = start + 30 Get #1, start, Artist frmId3.txtArtist.Text = Trim(Artist)start = start + 30 Get #1, start, Album frmId3.txtAlbum.Text = Trim(Album)start = start + 30 Get #1, start, Year frmId3.txtYear.Text = Trim(Year)start = start + 4 Get #1, start, Comment frmId3.txtComm.Text = Trim(Comment)start = start + 29 Get #1, start, TrckNum Select Case TrckNum Case 0 frmId3.txtTrck = "" Case Else frmId3.txtTrck = TrckNum End SelectFor i = 0 To 148 Select Case lblDetect Case i frmId3.Combo1.ListIndex = i Case 255 frmId3.Combo1.ListIndex = 148 End Select Next ifrmId3.txtTitle.Enabled = True frmId3.txtArtist.Enabled = True frmId3.txtAlbum.Enabled = True frmId3.txtYear.Enabled = True Combo1.Enabled = True frmId3.txtTrck.Enabled = True frmId3.txtComm.Enabled = TruefrmId3.txtTitle.BackColor = &H80000005 frmId3.txtArtist.BackColor = &H80000005 frmId3.txtAlbum.BackColor = &H80000005 frmId3.txtYear.BackColor = &H80000005 Combo1.BackColor = &H80000005 frmId3.txtTrck.BackColor = &H80000005 frmId3.txtComm.BackColor = &H80000005Else frmId3.Check1.Value = 0 frmId3.txtTitle.Text = "" frmId3.txtArtist.Text = "" frmId3.txtAlbum.Text = "" frmId3.txtYear.Text = "" frmId3.Combo1.ListIndex = 148 frmId3.txtTrck.Text = "" frmId3.txtComm.Text = ""frmId3.txtTitle.Enabled = False frmId3.txtArtist.Enabled = False frmId3.txtAlbum.Enabled = False frmId3.txtYear.Enabled = False frmId3.Combo1.Enabled = False frmId3.txtTrck.Enabled = False frmId3.txtComm.Enabled = FalsefrmId3.txtTitle.BackColor = &H8000000F frmId3.txtArtist.BackColor = &H8000000F frmId3.txtAlbum.BackColor = &H8000000F frmId3.txtYear.BackColor = &H8000000F frmId3.Combo1.BackColor = &H8000000F frmId3.txtTrck.BackColor = &H8000000F frmId3.txtComm.BackColor = &H8000000FEnd If Close #1 End SubPrivate Sub cmdUpdate_Click() Update (cdlId3.FileName) End SubPrivate Sub Command1_Click() txtTitle.Text = LCase(txtTitle.Text) txtAlbum.Text = LCase(txtAlbum.Text) txtArtist.Text = LCase(txtArtist.Text) End SubPrivate Sub cmdCancel_Click() Unload Me End SubPrivate Sub Command2_Click() cdlId3.Filter = "Mpeg Layer III files (*.mp3)|*.mp3" cdlId3.ShowOpen If cdlId3.FileName <> "" Then Id3v1 (cdlId3.FileName) Check1.Enabled = True Else: Exit Sub End If End SubPrivate Sub Form_Load() genr frmId3.Combo1.ListIndex = 148 End Sub Private Sub Check1_Click() If Check1.Value = 1 Then If lblTest = "TAG" Then cmdUpdate.Enabled = True Exit Sub Else cmdUpdate.Enabled = True Open selectedFile For Binary Access Write As #1 Position = FileLen(selectedFile) Dim place As String * 3 place = "TAG" Put #1, Position, place Position = Position + 2 For i = 1 To 125 Put #1, Position + i, CByte(0) Next i Put #1, Position + 125, CByte(148) End If End If txtTitle.Enabled = True txtArtist.Enabled = True txtAlbum.Enabled = True txtYear.Enabled = True Combo1.Enabled = True txtTrck.Enabled = True txtComm.Enabled = TruetxtTitle.BackColor = &H80000005 txtArtist.BackColor = &H80000005 txtAlbum.BackColor = &H80000005 txtYear.BackColor = &H80000005 Combo1.BackColor = &H80000005 txtTrck.BackColor = &H80000005 txtComm.BackColor = &H80000005Close #1 End SubPrivate Sub txtYear_Change() If Not IsNumeric(txtYear.Text) Then txtYear.Text = "" End If End Sub
Dim Title As String * 30
Dim Artist As String * 30
Dim Album As String * 30
Dim Year As String * 4
Dim genre As Byte
Dim Comment As String * 29
Dim TrckNum As BytePublic Sub genr()
Dim genre(0 To 148)
genre(0) = "Blues"
genre(1) = "Classic Rock"
genre(2) = "Country"
genre(3) = "Dance"
genre(4) = "Disco"
genre(5) = "Funk"
genre(6) = "Grunge"
genre(7) = "Hip-Hop"
genre(8) = "Jazz"
genre(9) = "Metal"
genre(10) = "New Age"
genre(11) = "Oldies"
genre(12) = "Other"
genre(13) = "Pop"
genre(14) = "R&B"
genre(15) = "Rap"
genre(16) = "Reggae"
genre(17) = "Rock"
genre(18) = "Techno"
genre(19) = "Industrial"
genre(20) = "Alternative"
genre(21) = "Ska"
genre(22) = "Death Metal"
genre(23) = "Pranks"
genre(24) = "Soundtrack"
genre(25) = "Euro-Techno"
genre(26) = "Ambient"
genre(27) = "Trip-Hop"
genre(28) = "Vocal"
genre(29) = "Jazz+Funk"
genre(30) = "Fusion"
genre(31) = "Trance"
genre(32) = "Classical"
genre(33) = "Instrumental"
genre(34) = "Acid"
genre(35) = "House"
genre(36) = "Game"
genre(37) = "Sound Clip"
genre(38) = "Gospel"
genre(39) = "Noise"
genre(40) = "Alternative Rock"
genre(41) = "Bass"
genre(42) = "Soul"
genre(43) = "Punk"
genre(44) = "Space"
genre(45) = "Meditative"
genre(46) = "Instrumental Pop"
genre(47) = "Instrumental Rock"
genre(48) = "Ethnic"
genre(49) = "Gothic"
genre(50) = "Darkwave"
genre(51) = "Techno-Industrial"
genre(52) = "Electronic"
genre(53) = "Pop-Folk"
genre(54) = "Eurodance"
genre(55) = "Dream"
genre(56) = "Southern Rock"
genre(57) = "Comedy"
genre(58) = "Cult"
genre(59) = "Gangsta"
genre(60) = "Top 40"
genre(61) = "Christian Rap"
genre(62) = "Pop/Funk"
genre(63) = "Jungle"
genre(64) = "Native US"
genre(65) = "Cabaret"
genre(66) = "New Wave"
genre(67) = "Psychadelic"
genre(68) = "Rave"
genre(69) = "Showtunes"
genre(70) = "Trailer"
genre(71) = "Lo-Fi"
genre(72) = "Tribal"
genre(73) = "Acid Punk"
genre(74) = "Acid Jazz"
genre(75) = "Polka"
genre(76) = "Retro"
genre(77) = "Musical"
genre(78) = "Rock & Roll"
genre(79) = "Hard Rock"
genre(80) = "Folk"
genre(81) = "Folk-Rock"
genre(82) = "National Folk"
genre(83) = "Swing"
genre(84) = "Fast Fusion"
genre(85) = "Bebob"
genre(86) = "Latin"
genre(87) = "Revival"
genre(88) = "Celtic"
genre(89) = "Bluegrass"
genre(90) = "Avantgarde"
genre(91) = "Gothic Rock"
genre(92) = "Progressive Rock"
genre(93) = "Psychedelic Rock"
genre(94) = "Symphonic Rock"
genre(95) = "Slow Rock"
genre(96) = "Big Band"
genre(97) = "Chorus"
genre(98) = "Easy Listening"
genre(99) = "Acoustic"
genre(100) = "Humour"
genre(101) = "Speech"
genre(102) = "Chanson"
genre(103) = "Opera"
genre(104) = "Chamber Music"
genre(105) = "Sonata"
genre(106) = "Symphony"
genre(107) = "Booty Bass"
genre(108) = "Primus"
genre(109) = "Porn Groove"
genre(110) = "Satire"
genre(111) = "Slow Jam"
genre(112) = "Club"
genre(113) = "Tango"
genre(114) = "Samba"
genre(115) = "Folklore"
genre(116) = "Ballad"
genre(117) = "Power Ballad"
genre(118) = "Rhytmic Soul"
genre(119) = "Freestyle"
genre(120) = "Duet"
genre(121) = "Punk Rock"
genre(122) = "Drum Solo"
genre(123) = "Acapella"
genre(124) = "Euro-House"
genre(125) = "Dance Hall"
genre(126) = "Goa"
genre(127) = "Drum & Bass"
genre(128) = "Club-House"
genre(129) = "Hardcore"
genre(130) = "Terror"
genre(131) = "Indie"
genre(132) = "BritPop"
genre(133) = "Negerpunk"
genre(134) = "Polsk Punk"
genre(135) = "Beat"
genre(136) = "Christian Gangsta"
genre(137) = "Heavy Metal"
genre(138) = "Black Metal"
genre(139) = "Crossover"
genre(140) = "Contemporary C"
genre(141) = "Christian Rock"
genre(142) = "Merengue"
genre(143) = "Salsa"
genre(144) = "Thrash Metal"
genre(145) = "Anime"
genre(146) = "Jpop"
genre(147) = "SynthPop"
genre(148) = ""
For i = 0 To 148
frmId3.Combo1.AddItem genre(i), i
Next i
End SubPublic Sub Update(selectedFile As String)
Dim B As String
Dim A As String
On Error GoTo hell:
Open selectedFile For Binary Access Write As #1
savestate:
Position = FileLen(selectedFile) - 128
start = Position + 4
Title = Trim(frmId3.txtTitle.Text)
Put #1, start, Title
B = Len(frmId3.txtTitle.Text)
A = 30 - B
For i = 0 To A
Put #1, (start + B) + i, CByte(0)
Next istart = start + 30
Artist = Trim(frmId3.txtArtist.Text)
Put #1, start, Artist
B = Len(frmId3.txtArtist.Text)
A = 30 - B
For i = 0 To A
Put #1, (start + B) + i, CByte(0)
Next istart = start + 30
Album = Trim(frmId3.txtAlbum.Text)
Put #1, start, Album
B = Len(frmId3.txtAlbum.Text)
A = 30 - B
For i = 0 To A
Put #1, (start + B) + i, CByte(0)
Next istart = start + 30
Year = frmId3.txtYear.Text
Put #1, start, Year
B = Len(frmId3.txtYear.Text)
A = 30 - B
For i = 0 To A
Put #1, (start + B) + i, CByte(0)
Next istart = start + 4
Comment = Trim(frmId3.txtComm.Text)
Put #1, start, Comment
B = Len(frmId3.txtComm.Text)
A = 30 - B
For i = 0 To A
Put #1, (start + B) + i, CByte(0)
Next istart = start + 29
If frmId3.txtTrck.Text = "" Then
Put #1, start, CByte(0)
Else
TrckNum = CByte(frmId3.txtTrck.Text)
Put #1, start, TrckNum
End Ifstart = start + 1
For i = 0 To 148
If Combo1.ListIndex = i Then
genre = i
End If
Next i
Put #1, start, genre
Close #1
Exit Sub
hell:
Dim mes
mes = MsgBox("You can not modify this file while is playing...")
Close #1End Sub
Dim Detect As ByteIf frmId3.lblTest = "TAG" Then frmId3.cmdUpdate.Enabled = True
openstate:
Open selectedFile For Binary Access Read As #1
Position = FileLen(selectedFile) - 128Get #1, Position + 1, test
frmId3.lblTest = testGet #1, FileLen(selectedFile), Detect
lblDetect = DetectIf test = "TAG" ThenCheck1.Value = 1start = Position + 4
Get #1, start, Title
frmId3.txtTitle.Text = Trim(Title)start = start + 30
Get #1, start, Artist
frmId3.txtArtist.Text = Trim(Artist)start = start + 30
Get #1, start, Album
frmId3.txtAlbum.Text = Trim(Album)start = start + 30
Get #1, start, Year
frmId3.txtYear.Text = Trim(Year)start = start + 4
Get #1, start, Comment
frmId3.txtComm.Text = Trim(Comment)start = start + 29
Get #1, start, TrckNum
Select Case TrckNum
Case 0
frmId3.txtTrck = ""
Case Else
frmId3.txtTrck = TrckNum
End SelectFor i = 0 To 148
Select Case lblDetect
Case i
frmId3.Combo1.ListIndex = i
Case 255
frmId3.Combo1.ListIndex = 148
End Select
Next ifrmId3.txtTitle.Enabled = True
frmId3.txtArtist.Enabled = True
frmId3.txtAlbum.Enabled = True
frmId3.txtYear.Enabled = True
Combo1.Enabled = True
frmId3.txtTrck.Enabled = True
frmId3.txtComm.Enabled = TruefrmId3.txtTitle.BackColor = &H80000005
frmId3.txtArtist.BackColor = &H80000005
frmId3.txtAlbum.BackColor = &H80000005
frmId3.txtYear.BackColor = &H80000005
Combo1.BackColor = &H80000005
frmId3.txtTrck.BackColor = &H80000005
frmId3.txtComm.BackColor = &H80000005Else
frmId3.Check1.Value = 0
frmId3.txtTitle.Text = ""
frmId3.txtArtist.Text = ""
frmId3.txtAlbum.Text = ""
frmId3.txtYear.Text = ""
frmId3.Combo1.ListIndex = 148
frmId3.txtTrck.Text = ""
frmId3.txtComm.Text = ""frmId3.txtTitle.Enabled = False
frmId3.txtArtist.Enabled = False
frmId3.txtAlbum.Enabled = False
frmId3.txtYear.Enabled = False
frmId3.Combo1.Enabled = False
frmId3.txtTrck.Enabled = False
frmId3.txtComm.Enabled = FalsefrmId3.txtTitle.BackColor = &H8000000F
frmId3.txtArtist.BackColor = &H8000000F
frmId3.txtAlbum.BackColor = &H8000000F
frmId3.txtYear.BackColor = &H8000000F
frmId3.Combo1.BackColor = &H8000000F
frmId3.txtTrck.BackColor = &H8000000F
frmId3.txtComm.BackColor = &H8000000FEnd If
Close #1
End SubPrivate Sub cmdUpdate_Click()
Update (cdlId3.FileName)
End SubPrivate Sub Command1_Click()
txtTitle.Text = LCase(txtTitle.Text)
txtAlbum.Text = LCase(txtAlbum.Text)
txtArtist.Text = LCase(txtArtist.Text)
End SubPrivate Sub cmdCancel_Click()
Unload Me
End SubPrivate Sub Command2_Click()
cdlId3.Filter = "Mpeg Layer III files (*.mp3)|*.mp3"
cdlId3.ShowOpen
If cdlId3.FileName <> "" Then
Id3v1 (cdlId3.FileName)
Check1.Enabled = True
Else: Exit Sub
End If
End SubPrivate Sub Form_Load()
genr
frmId3.Combo1.ListIndex = 148
End Sub
Private Sub Check1_Click()
If Check1.Value = 1 Then
If lblTest = "TAG" Then
cmdUpdate.Enabled = True
Exit Sub
Else
cmdUpdate.Enabled = True
Open selectedFile For Binary Access Write As #1
Position = FileLen(selectedFile)
Dim place As String * 3
place = "TAG"
Put #1, Position, place
Position = Position + 2
For i = 1 To 125
Put #1, Position + i, CByte(0)
Next i
Put #1, Position + 125, CByte(148)
End If
End If
txtTitle.Enabled = True
txtArtist.Enabled = True
txtAlbum.Enabled = True
txtYear.Enabled = True
Combo1.Enabled = True
txtTrck.Enabled = True
txtComm.Enabled = TruetxtTitle.BackColor = &H80000005
txtArtist.BackColor = &H80000005
txtAlbum.BackColor = &H80000005
txtYear.BackColor = &H80000005
Combo1.BackColor = &H80000005
txtTrck.BackColor = &H80000005
txtComm.BackColor = &H80000005Close #1
End SubPrivate Sub txtYear_Change()
If Not IsNumeric(txtYear.Text) Then
txtYear.Text = ""
End If
End Sub