• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Hướng dẫn dùng Windows Media Player / VB6

Các bài viết hướng dẫn, giúp các bạn hiểu và tiếp cận với Visual Basic nhanh hơn
Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4753
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 13 time
Been thanked: 509 time

Hướng dẫn dùng Windows Media Player / VB6

Gửi bàigửi bởi truongphu » T.Ba 29/07/2014 8:00 pm

Tên bài viết: Hướng dẫn dùng Windows Media Player / VB6
Tác giả: truongphu
Cấp độ bài viết: advance
Tóm tắt: Công cụ WMP rất hay, nhưng đa số chúng tachỉ mày mò. Bài viết này sẽ hướng dẫn cụ thể WMP trên VB6



Giao diện thử nghiệm:
giao diên.JPG


1- Vẽ lên Form WMP control, đặt tên là WMP cho khỏi rườm rà, (trên hình là góc trên trái). Bên dưới ta vẽ thêm 1 FileListbox, tên File1 để quản lý các file trong folder.

Lưu ý: các file và folder trên máy nên dùng tiếng Việt không dấu.

*** WMP sẽ hoạt động tốt với các file "playlist" với đuôi là wpl. Thư mục hay chứa file nầy (default trên XP) là My Documents\My Music.
Khai Path cho File1 đặt ở Form Load.

Mã: Chọn hết

    sMyMusic = CreateObject("Shell.Application").Namespace(13).Self.Path _
    & "\My Playlists"

sMyMusic được trả về đường dẫn tốt (trên XP, version cao hơn chưa test)

Mã: Chọn hết

    File1.Path = sMyMusic


nếu trong đó có các file wpl, danh sách playlist sẽ hiện lên...

2- Giả sử máy chưa có playlist nào, vậy sau form load, ta phải làm: dẫn đến folder chứa các file mp3 (hay mpeg...) để tạo playlist.
(Trên hình, góc dưới phải có nút Add Folder cho việc nầy)

Mã: Chọn hết

Public Function FindFolder$() ' Browser the folder
    Dim PathFolder As Object
    Set PathFolder = CreateObject("Shell.Application") _
    .BrowseForFolder(0, "Select a folder:", 0)
    If Not PathFolder Is Nothing Then FindFolder = PathFolder.Self.Path
    Set PathFolder = Nothing
End Function


dùng function ở nút Add Folder:

Mã: Chọn hết

 sPath = FindFolder ' Add Folder
        If sPath = "" Then Exit Sub
        Dim FSO As Object, FTmp As Object
        Set FSO = CreateObject("Scripting.FileSystemObject").GetFolder(sPath).Files
        For Each FTmp In FSO
            M = GetFileNameFromPath(FTmp.Path)
            M = Left(M, Len(M) - 4)
            List2.AddItem M
            dicLamPlaylist.Add CStr(Rnd * 1000), FTmp.Path
        Next
        La(7).Caption = List2.ListCount & " bài"
        Set MyFSO = Nothing: Set FTmp = Nothing


Còn tiếp... :D

(Bạn nào muốn xem và load project nhanh, ghé vào
https://plus.google.com/communities/100 ... 4243511758 )


o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4753
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 13 time
Been thanked: 509 time

Re: Hướng dẫn dùng Windows Media Player / VB6

Gửi bàigửi bởi truongphu » T.Tư 30/07/2014 4:44 pm

Dùng thư viện của Windows Media Player:

I- Liên quan đến Playlist: (Danh sách bài nhạc)
Play một bản nhạc, tạo một danh sách... tất cả đều liên quan đến Playlist.
Kiến trúc (Class) cao nhất của lớp Playlist là IWMPPlaylistCollection, là tập hợp toàn bộ Playlist (Collection of Playlist).
[IWMP] là tiếp đầu ngữ của nhóm lớp (Class)

Ta có: WMP---> PlaylistCollection
Dưới PlaylistCollection, phân từng mảng Playlist: IWMPPlaylistArray
Ta có: WMP ---> PlaylistCollection ----> PlaylistArray
Cuối cùng là một Playlist cụ thể.
Ta có: WMP ---> PlaylistCollection ----> PlaylistArray ----> Playlist

Khi ta vẽ lên Form một WMP, vd WindowsMediaPlayer1, ta đã có công cụ thực hành (application) đứng lớp cao nhất.
Ta chỉ việc khai báo các biến Object theo thứ tự lớp ở trên, và gán cho WindowsMediaPlayer1 dùng:

I)- A- lớp PlaylistCollection: dùng tên biến tùy ý, để dễ phân biệt, tôi dùng tên CollecPlaylist, lần lượt là MangPlaylist và MyPlaylist.

Mã: Chọn hết

Dim CollecPlaylist As IWMPPlaylistCollection ''''' (General) '''''
Set CollecPlaylist = WindowsMediaPlayer1.PlayListCollection


Ghi chú: Các biến Object như CollecPlaylist, MangPlaylist, MyPlaylist phải khai báo toàn cục (General) vì được dùng trong nhiều Sub.

Ghi chú: Câu Set CollecPlaylist = WindowsMediaPlayer1.PlayListCollection nên đưa vào Form Load để tránh lập lại, chỉ cần khai báo 1 lần.

Ghi chú: vì ta có Set địa chỉ cụ thể, nên câu khai báo Dim, có thể gán là Object, vd:
Dim CollecPlaylist As Object
Set CollecPlaylist = WindowsMediaPlayer1.PlayListCollection


Nhưng kiểu khai báo nầy không được IDE hổ trợ cho việc viết code, vì chỉ khi runtime, CollecPlaylist mới biến thành WindowsMediaPlayer1.PlayListCollection, còn khi viết code thì chưa, do đó IDE chưa biết CollecPlaylist là cái gì!

I)- B- tiếp theo lớp PlaylistArray
Dim MangPlaylist As IWMPPlaylistArray ''''' (General) '''''
Set MangPlaylist = WindowsMediaPlayer1.PlayListCollection.(PlaylistArray)

CollecPlaylist = WindowsMediaPlayer1.PlayListCollection
nên ta viết gọn:
Set MangPlaylist = CollecPlaylist.(PlaylistArray)

Làm gì có code .(PlaylistArray) ? Tôi viết như thế để các bạn thấy chuỗi lớp từ "cha" đến "con".
Sau CollecPlaylist khi ta gõ dấu chấm . thì IDE đã xuất hiện các lớp con (tương đương PlaylistArray). Và tùy tình huống mà ta Set:
Hai tình huống hay gặp nhất là load Playlist và tạo mới Playlist và code hay dùng là:

Mã: Chọn hết

Set MangPlaylist = CollecPlaylist.getByName(Name)


mà đối số Name của hàm .getByName là tên của Playlist cần load hay tạo mới.

I)- C- tiếp theo lớp Playlist:

Mã: Chọn hết

Dim MyPlaylist As IWMPPlaylist ' (General)


Tùy tình huống mà Set MyPlaylist:
C1- tạo Playlist mới:

Mã: Chọn hết

Set MyPlaylist = CollecPlaylist.newPlaylist(Name)


C2- load Playlist

Mã: Chọn hết

Set MyPlaylist = MangPlaylist.Item(0)


trong 2 tình huống trên, C2 là cha đẻ con, mà C1 thì ông nội đẻ cháu!
Thực ra lớp PlaylistArray chỉ là trung gian giữa 2 lớp PlayListCollection và PlayList. (giữa tập hợp PL và PL).
Khi tạo mới Playlist, ta dùng trực tiếp từ PlaylistCollection ---> Playlist [CollecPlaylist.newPlaylist(Name)].

Còn khi load, PlaylistCollection phải lục lọi trong kho [CollecPlaylist.getByName(Name)], mà hàm .getByName(Name) trả về mảng!
Vì thế, cho dù Name của Playlist chỉ có 1, ta không thể viết tắt như Set MyPlaylist = CollecPlaylist.getByName(Name).
Cho nên ta phải viết Set MyPlaylist = MangPlaylist.Item(0) là vì vậy.

Túm lại, hai câu lệnh sau phải, hoặc hay đi kèm:

Mã: Chọn hết

Set MangPlaylist = CollecPlaylist.getByName(Name)
Set MyPlaylist = MangPlaylist.Item(0)


Từ đây, MyPlaylist được WindowsMediaPlayer1 quản lý như là 1 Playlist trong Collection của nó. Để WindowsMediaPlayer1 dùng MyPlaylist, ta viết:

Mã: Chọn hết

WindowsMediaPlayer1.currentPlaylist = MyPlaylist


II- Liên quan đến Media: (bài nhạc = file)
Các bài nhạc được WMP cho vào Collection riêng, (MediaCollection)
Ta có: WMP---> MediaCollection ----> Media
Phân lớp ở đây đơn giản hơn, nên code gọn hơn:

II)- A- MediaCollection

Mã: Chọn hết

Dim AllSong As IWMPMediaCollection ''''' (General) '''''

Chỉ khi dùng tạo mới Playlist, có liên quan đến các file, MediaCollection mới sử dụng đến, do đó câu trên thích khai báo trong Sub làm Playlist cũng được.

Mã: Chọn hết

Set AllSong = WindowsMediaPlayer1.MediaCollection

Và câu Set đương nhiên nên nằm trong Sub làm Playlist rồi!

II)- B- Media

Mã: Chọn hết

Dim MySong As IWMPMedia ''''' (General) '''''

Cũng như MediaCollection, đối tượng Media ít quan trọng, ưng khai báo trong Sub cũng được. (Tuy niên vì nhiều ứng dụng, nên viết ở General)

Đối tượng Media nầy nhiều ứng dụng, chuẩn nhất là khi dùng tạo mới Playlist, Set như sau

Mã: Chọn hết

Set MySong = AllSong.Add(Path_File_as_String)


Ngoài ra, Media nầy được dùng để lấy bài nhạc cụ thể (thông tin file nhạc) từ Playlist, vd:

Mã: Chọn hết

Set MySong = MyPlaylist.Item(i_As_Long)


Vì thế, chuẩn thì gọi MySong (IWMPMedia), viết nhanh thì gán bất cứ Object nào:

Mã: Chọn hết

Set zzzObject = AllSong.Add(Path_File_as_String)
Set oooObject = MyPlaylist.Item(i_As_Long)


Kết: Bạn đã quen các đối tượng WMP: PlaylistCollection, PlaylistArray, Playlist, MediaCollection, Media.
Với các khái niệm làm quen trên, tôi đảm bảo bạn sẽ viết code dùng WMP dễ dàng với IDE trợ giúp; hoặc đọc code dễ hiểu trong Project mà bạn nếu đã load.

Các bài sau sẽ có code từng button...
B-)
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

dongdo1234
Thành viên chính thức
Thành viên chính thức
Bài viết: 19
Ngày tham gia: T.Sáu 18/01/2013 8:56 am
Đến từ: Giao Thủy - Nam Định
Has thanked: 8 time
Been thanked: 1 time
Liên hệ:

Re: Hướng dẫn dùng Windows Media Player / VB6

Gửi bàigửi bởi dongdo1234 » T.Sáu 18/09/2015 9:42 am

Bài viết rất chi tiết
Thank bác

BUIKHAI2129
Bài viết: 2
Ngày tham gia: CN 01/11/2015 1:52 pm

Re: Hướng dẫn dùng Windows Media Player / VB6

Gửi bàigửi bởi BUIKHAI2129 » CN 01/11/2015 4:23 pm

muốn nó phát tất cả các bài (hát xong bài này tự chuyển sang bài khác) thì làm sao ạ ??? help cháu với (nói trong nước mắt )

Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 940
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 49 time
Been thanked: 64 time
Liên hệ:

Re: Hướng dẫn dùng Windows Media Player / VB6

Gửi bàigửi bởi NoBi » T.Hai 02/11/2015 5:47 pm

Nó có sự kiện khi kết thúc 1 bài hát. Bạn bắt sự kiện đó rồi cho nó phát bài tiếp theo trong list.
:>

BUIKHAI2129
Bài viết: 2
Ngày tham gia: CN 01/11/2015 1:52 pm

Re: Hướng dẫn dùng Windows Media Player / VB6

Gửi bàigửi bởi BUIKHAI2129 » T.Ba 03/11/2015 10:47 am

??????? , anh NoBi nói như không, em không thấy cái vụ đấy


Quay về “[VB] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách