当选定一个媒体文件(比如mp3文件)后,单击鼠标右键,在文件属性窗口中有文件摘要信息.请问如何有vb读取其信息,和如何用vb写入这些信息.就好详细叙述!谢谢

解决方案 »

  1.   

    例如获取wma的信息:'引用Windows Media Player
    Private Sub cmdOk_Click()
        Dim I As Long
        Dim oWMP As WindowsMediaPlayer
        Dim oMedia As IWMPMedia3
        Dim oPlaylist As IWMPPlaylist
        
        Set oWMP = New WindowsMediaPlayer
        Set oMedia = oWMP.newMedia(App.Path & "\Study06\文件名.wma")
        With oMedia
            '列出所有可用属性
            For I = 0 To .attributeCount - 1
                'Debug.Print .getAttributeName(I)
                txt.Text = txt.Text & .getAttributeName(I) & Space(20)
            Next
            '设定属性
            Call .setItemInfo("Author", "作者")
        End With
    End Sub^_^
      

  2.   

    Mp3Play.ocx是一个专门播放MP3音乐文件的VB控件就行。我们编写自己的播放器,使用该控件,并适当设置其属性,就可以获得专业级的MP3音乐效果。要想使用该控件,最好将它放到Windows\system目录,并且在注册表中注册。利用该控件,还可以将一个MP3文件解码为一个WAV文件。Mp3Play.ocx的主要属性有:
      
      BitRate:MP3流比特率;FrameCount:MP3流帧记数;TotalTime:总计已播放的时间;FrameNotifyCount(RW):发送一次通告的帧数,缺省为32;IsCopyrighted、IsOriginal、HasChecksums:从MP3流获得的发行信息;SampleFrequency:采样率;Layer:取值可以为1、2、3,分别代表Layer1、Layer2、Layer3的标准,缺省为3,这意味着MPx的文件都可以播放;MPEGVersion:取值代表MPEG-1或MPEG-2。常用的方法有:
      
      AboutBox():显示About框。
      
      Authorize(Name,Password):验证许可证(注册码),Name即注册名,Password为注册码,由控件的提供商在用户注册后提供,返回值为0则通过,否则为5。Open(Inputfile,Outputfile):打开MPEG音频文件并解码播放,若在声卡上播放则Outputfile应为空串,返回非0值表示解码有误。如果Outputfile为文件名则解码至WAV文件。也就是说,可以利用此方法编写MP3-WAV转换器。Close:关闭当前MPEG流解码。
      
      GetVolumeLeft,GetVolumeRight:获取左右声道的音量,返回Long型值。SetVolume(leftchannel,rightchannel):设置系统左右声道音量。Pause():暂停,奇次声音暂停,偶次开启。
      
      Play():开始解码,并播放当前MPEG文件,返回0表示解码无误。Stop():停止当前解码工作,返回非0表示有误。
      
      下面,我们一步一步地完成:
      
      1.添加Mp3Play.ocx控件
      
      启动VB5,选择StandardEXE。此时,左边的控件面板中只是一些Win95标准控件。我们选Project(工程)菜单下的Components...(组件)项,在弹出的对话框中选中Dialog-MedienMp3PlayActiveXControlModule项。这“宝贝”即我们所需的MP3控件。确定后在控件面板中会增添一个蓝色的喇叭图标,表示该控件已经添加到控件面板中。2.设置属性
      
      点中蓝色喇叭,在窗体中拖动一个矩形框,松开后在窗体中出现MP3控件图标。为了在播放时隐去喇叭,在MP3Play1的属性表中将Visible设为False。一般就这么多,剩下的就是使用它的方法(Methods)了。3.添加按钮
      
      点中“Command”按钮,在窗体中建立三个名字分别为Command1、Command2、Command3的命令按钮,将它们的Caption分别设为“选择MP3文件”、“播放”、“暂停”。4.添加CommonDialog控件
      
      为能方便地选择MP3文件,还需文件打开对话框。如果控件面板中没有此控件,如1中所述选中Components菜单项,在MicrosoftCommonDialogControl5.0前的复选框中打勾,确认后即可在控件面板中看到此控件图标。在窗体中建立一个名为CommonDialog1的对象,为使能快速找到MP3的文件,需要设置它的Filter属性为“.MP3|.MP3”。5.在按钮中编写相应的代码
      
      双击Command1,在PrivateSubCommand1_Click()中输入以下代码:CommonDialog1.ShowOpen
      
      双击Command2,在PrivateSubCommand2_Click()中输入:Err=Mp3Play1.Open(CommonDialog1.filename,″″)Mp3Play1.Play
      
      双击Command3,在PrivateSubCommand3_Click()中输入:Mp3Play1.Pause
      
      6.调整窗口大小,运行播放器
      
      

  3.   

    一个获取mp3信息的例子Public Type Mp3tag 
          Artist  As String        ’Artist 存储歌手信息 
          Album  As String         ’Album  存储唱片专辑信息 
          Title As String          ’Title  存储标题信息      
          Year As String           ’Year   存储年代信息 
          Comments As String       ’Comments 存储备注信息 
          Genre As Integer         ’Genre   存储音乐风格序列 
      End Type       然后,定义一个获取MP3信息的函数,它将返回这些信息,代码如下: Public Function GetMp3Tag(FName As String) As Mp3tag 
        Dim Artist As String 
        Dim Album As String 
        Dim Title As String 
        Dim Year As String 
        Dim Comments As String 
        Dim Genre As Integer 
         
        If FName = "" Then Exit Function     If Dir(FName) = "" Then Exit Function 
         
        Dim FileNum As Integer     FileNum = FreeFile                            ’得到一个自由的文件号     Dim strInput As String     Open FName For Binary Access Read As FileNum  ’以二进制形式打开文件 
         
        If LOF(FileNum) < 128 Then 
            Close FileNum 
            Exit Function 
        End If 
         
        Seek FileNum, LOF(FileNum) - 127             ’把文件指针移动到MP3信息处 
        strInput = Space(3) 
        Get FileNum, , strInput 
        If strInput <> "TAG" Then                    ’如果没有发现信息标识,就关闭文件 
            Close FileNum 
            GoTo Done: 
        End If 
         
        strInput = Space(30) 
        Get FileNum, , strInput 
        Title = Trim(strInput) 
         
        strInput = Space(30) 
        Get FileNum, , strInput 
        Artist = Trim(strInput) 
         
        strInput = Space(30) 
        Get FileNum, , strInput 
        Album = Trim(strInput) 
         
        strInput = Space(4) 
        Get FileNum, , strInput 
        Year = Trim(strInput) 
         
        strInput = Space(30) 
        Get FileNum, , strInput 
        Comments = Trim(strInput) 
         
        strInput = Space(1) 
        Get FileNum, , strInput 
        Genre = Asc(strInput) Done: 
            GetMp3Tag.Title = Title 
            GetMp3Tag.Artist = Artist 
            GetMp3Tag.Album = Album 
            GetMp3Tag.Year = Year 
            GetMp3Tag.Year = Comments 
            If Genre < 0 Or Genre > 254 Then Genre = 12 
            GetMp3Tag.Genre = CInt(Genre) 
             
        Close FileNum End Function 
        
       注意:MP3文件对音乐的风格进行了限制,共254种。Genre返回的只是MP3风格的序列号,具体还需要定位,在这里我把所有类型以常数形式列出,每个类型之间用"|"号隔开。 Private Const sGenreMatrix = "Blues|Classic Rock|Country|Dance|Disco|Funk|Grunge|" + _ 
        "Hip-Hop|Jazz|Metal|New Age|Oldies|Other|Pop|R&B|Rap|Reggae|Rock|Techno|" + _ 
        "Industrial|Alternative|Ska|Death Metal|Pranks|Soundtrack|Euro-Techno|" + _ 
        "Ambient|Trip Hop|Vocal|Jazz+Funk|Fusion|Trance|Classical|Instrumental|Acid|" + _ 
        "House|Game|Sound Clip|Gospel|Noise|Alt. Rock|Bass|Soul|Punk|Space|Meditative|" + _ 
        "Instrumental Pop|Instrumental Rock|Ethnic|Gothic|Darkwave|Techno-Industrial|Electronic|" + _ 
        "Pop-Folk|Eurodance|Dream|Southern Rock|Comedy|Cult|Gangsta Rap|Top 40|Christian Rap|" + _ 
        "Pop/Punk|Jungle|Native American|Cabaret|New Wave|Phychedelic|Rave|Showtunes|Trailer|" + _ 
        "Lo-Fi|Tribal|Acid Punk|Acid Jazz|Polka|Retro|Musical|Rock & Roll|Hard Rock|Folk|" + _ 
        "Folk/Rock|National Folk|Swing|Fast-Fusion|Bebob|Latin|Revival|Celtic|Blue Grass|" + _ 
        "Avantegarde|Gothic Rock|Progressive Rock|Psychedelic Rock|Symphonic Rock|Slow Rock|" + _ 
        "Big Band|Chorus|Easy Listening|Acoustic|Humour|Speech|Chanson|Opera|Chamber Music|" + _ 
        "Sonata|Symphony|Booty Bass|Primus|Porn Groove|Satire|Slow Jam|Club|Tango|Samba|Folklore|" + _ 
        "Ballad|power Ballad|Rhythmic Soul|Freestyle|Duet|Punk Rock|Drum Solo|A Capella|Euro-House|" + _ 
        "Dance Hall|Goa|Drum & Bass|Club-House|Hardcore|Terror|indie|Brit Pop|Negerpunk|Polsk Punk|" + _ 
        "Beat|Christian Gangsta Rap|Heavy Metal|Black Metal|Crossover|Comteporary Christian|" + _ 
        "Christian Rock|Merengue|Salsa|Trash Metal|Anime|JPop|Synth Pop" 
        把以上代码写到一个模块中(.Bas),然后在窗体上加入5个TextBox和1个ComboBox控件,其中5个TextBox控件分别用来显示一首Mp3文件的以下信息:歌手、年代、唱片、评论、标题,ComboBox控件用来显示歌曲的风格。再放一个Command控件,其标题为“显示信息”,在它的Click事件中加入以下代码: 
                Private sub Command1_click() 
                Dim mp3Tag as Mp3tag 
                mp3tag = GetMp3Tag ("c:\Song.mp3") 
                Text1.Text = mp3tag.Artist 
                Text2.Text = mp3tag.Album 
                Text3.Text = mp3tag.Title 
                Text4.Text = mp3tag.Year 
                Text5.Text = mp3tag.Comments 
                Combo1.ListIndex = mp3tag.Genre 
                End Sub 
         在窗体的加载过程中加入如下代码: 
                Private Sub Form_Load() 
                Dim i As Integer,GenreArray() As String 
                GenreArray = Split(sGenreMatrix, "|") 
                For i = LBound(GenreArray) To UBound(GenreArray) 
                Combo1.AddItem GenreArray(i) 
                Next i 
                End Sub 
       
         以上代码在VB6 \Win2000中测试通过。  http://www.vbaccelerator.com/home/VB/Code/vbMedia/Reading_and_Writing_MP3_ID3v1_and_v2_Tags/MP3_ID3_Tags_Code.zip
    这个例子可以读取修改MP3_ID3v1和ID3v2的Tag
      

  4.   

    http://community.csdn.net/Expert/topic/3276/3276922.xml?temp=6.647891E-02
    看这个例子,比较通用