• Thứ Hai, 12/02/2007 09:09 (GMT+7)

    Lập trình OCX để chơi nhạc

    Câu hỏi :
    1. Xin hướng dẫn lập trình bằng OCX của Windows Media Player 10 để chơi nhạc liên tục cho đến hết danh sách sẵn có.

    2. Làm thế nào để lập trình thay đổi màn hình nền của desktop. Tất cả được lập trình bằng Visual Basic .Net 2005. 
     

    Trả lời :
    1. Để đối tượng WMP 10 chơi liên tục các bài hát trong một danh sách sẵn có, trước hết bạn phải xây dựng danh sách các bài hát. Thường có 2 cách xây dựng danh sách bài hát:

     • Dùng trình WMP của Windows tạo playlist mới, thêm từng bài hát vào Playlist rồi lưu playlist lên file dạng *.wpl.

     • Xây dựng động playlist tại thời điểm chạy ứng dụng.
     Qui trình sau đây cho phép bạn tạo 1 ứng dụng VB .Net chứa đối tượng WMP 10, đối tượng WMP này sẽ chơi tự động danh sách các bài hát:

     • Chạy Visual Studio .Net, chọn menu File.New.Project để tạo mới 1 Project VB .Net.

     • Sau khi Form giao diện trống của ứng dụng hiển thị, bạn dời chuột về cửa sổ Toolbox (thường nằm bên trái), chọn tag Components để hiển thị các đối tượng OCX, nếu chưa có đối tượng WMP trong danh sách, bạn hãy ấn phải chuột vào vị trí trống phía dưới danh sách để hiển thị cửa sổ chức năng rồi chọn mục Add/Remove Items. Khi cửa sổ Customize Toolbox hiển thị, bạn chọn vào tag COM Components để hiển thị danh sách các ActiveX của máy lên rồi duyệt chọn mục Windows Media Player để "add" vào cửa sổ Toolbox.

     • Chọn icon Windows Media Player trong danh sách Components rồi vẽ nó ở vị trí qui định trong form ứng dụng với kích thước theo yêu cầu, nó có tên mặc định là AxWindowsMediaPlayer1.

     • Vào cửa sổ soạn code của Form, hiển thị region "Windows Form Designer generated code", duyệt tìm hàm InitializeComponent rồi thêm đoạn code sau vào cuối hàm :

     Dim Playlist As WMPLib.IWMPPlaylist
     'tạo 1 Playlist rỗng
     Playlist = AxWindowsMediaPlayer1.newPlaylist("MyPlaylist", "")
     'thêm các file media vào playlist Playlist.appendItem(AxWindowsMediaPlayer1.newMedia("c:\MP3\Uocgi.mp3"))
     Playlist.appendItem(AxWindowsMediaPlayer1.newMedia("c:\MP3\Giacmotinhyeu.mp3"))
     ...
     'set Playlist vừa tạo vào WMP, WMP sẽ chơi tự động từ bài đầu đến bài cuối.
     AxWindowsMediaPlayer1.currentPlaylist = Playlist
     Nếu đã tạo sẵn file Playlist thủ công bằng chương trình WMP, bạn viết đoạn code sau để AcitveX WMP chơi tự động file Playlist :
     Dim Playlist As WMPLib.IWMPPlaylist
     'tạo 1 Playlist từ file có sẵn
     Playlist = AxWindowsMediaPlayer1.newPlaylist("MyPlaylist", "c:\MP3\MyPlaylist.wpl")
     'set Playlist vừa tạo vào WMP, WMP sẽ chơi tự động từ bài đầu đến bài cuối.
     AxWindowsMediaPlayer1.currentPlaylist = Playlist
     
     2. Để lập trình trên VB .Net thay đổi động ảnh màn hình desktop, bạn có thể gọi hàm API Windows tên là SystemParametersInfo(). Đây là hàm API giả lập hầu như tất cả các hoạt động thủ công trên Control Panel của Windows. Đoạn code VB .Net thay đổi ảnh nền có thể được viết như sau:

     'khai báo các hằng cần dùng
     Private Const SPI_SETDESKWALLPAPER As Integer = &H14
     Private Const SPIF_UPDATEINIFILE As Integer = &H1
     Private Const SPIF_SENDWININICHANGE As Integer = &H2
     'khai báo hàm API cần dùng
     Private Declare Auto Function SystemParametersInfo Lib "user32.dll" (ByVal uAction As Integer, ByVal uParam As Integer, ByVal lpvParam As String, ByVal fuWinIni As Integer) As Integer
     ...
     'hàm thay đổi ảnh nền
     Private Sub DesktopChange_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DesktopChange.Click
     Dim fname As String
     'thiết lập đường dẫn file ảnh
     fname = "C:\hinhNikkon\hinhpcw\dsc01742.bmp"
     'gọi hàm SystemParametersInfo thay đổi ảnh desktop
     kq = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&, fname, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
     End Sub
     
    Chuyên mục: Lập trình