312
Chương 8: Đồ họa, đa phương tiện, và in ấn
•
Thư viện winmm.dll (có trong Windows) chứa hàm
sndPlaySound
nhận vào tên của một
file WAV và một thông số chỉ định cách chơi. Bạn có thể chọn chơi âm thanh một cách
đồng bộ (gián đoạn việc thực thi của chương trình cho đến khi âm thanh đã hoàn tất),
bất đồng bộ, hoặc trong một vòng lặp chạy phía nền.
•
Thư viện Quartz cung cấp một thành phần COM có thể chơi nhiều kiểu file audio, gồm
các định dạng WAV và MP3. Thư viện Quartz được cấp thông qua quartz.dll và nó là
một phần của Microsoft DirectX cho Windows Media Player và hệ điều hành Windows.
Trong ví dụ này, chúng ta sẽ sử dụng cách tiếp cận thứ hai. Bước đầu tiên là tạo một lớp
Interop có thể quản lý sự tương tác giữa ứng dụng .NET và thư viện Quartz. Bạn có thể tạo
một lớp C# cùng với đoạn mã Interop này bằng tiện ích Type Library Importer (tlbimp.exe) và
dòng lệnh sau đây (
[WindowsDir]
là đường dẫn của thư mục cài đặt Windows):
tlbimp [WindowsDir]\system32\quartz.dll /out:QuartzTypeLib.dll
Bạn có thể sử dụng Visual Studio .NET để tạo lớp Interop bằng cách thêm vào một tham
chiếu. Chỉ cần nhắp phải vào dự án của bạn trong Solution Explorer, và chọn Add Reference
từ menu ngữ cảnh. Kế tiếp, chọn thẻ COM, và cuộn xuống để chọn ActiveMovie control type
library (xem hình 8.7).
Một khi lớp Interop đã được tạo, bạn có thể làm việc với giao diện
IMediaControl
. Bạn có thể
chỉ định file mà bạn muốn chơi bằng
RenderFile
, và có thể điều khiển playback bằng các
phương thức như
Run
,
Stop
, và
Pause
. Playback diễn ra trên một tiểu trình độc lập, như thế nó
sẽ không block đoạn mã của bạn.