Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.



 
Trang ChínhTrang Chính  Latest imagesLatest images  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Share | 
 

 [C#] Sử dụng Trackbar để điều chỉnh âm thanh *

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Tesulakata
Quân hàm:Trung sĩ 1
Quân hàm:Trung sĩ 1
Tesulakata

Tổng số bài gửi : 141
Experience : 240
Đã được cảm ơn : 1
Join date : 18/05/2011
Age : 48
Đến từ : Heaven

[C#] Sử dụng Trackbar để điều chỉnh âm thanh * Empty
Bài gửiTiêu đề: [C#] Sử dụng Trackbar để điều chỉnh âm thanh *   [C#] Sử dụng Trackbar để điều chỉnh âm thanh * Icon_minitimeWed May 18, 2011 10:08 pm


[C#] Sử dụng Trackbar để điều chỉnh âm thanh *

Nguồn http://k14ktqs.cntt.in/

Trích dẫn :
Trong bài viết này bạn sẽ học cách làm sao lấy ra và thay đổi âm lượng của sound card bằng cách sử dụng gọi các phương thức waveOutGetVolume()waveOutSetVolume() từ các Windows API không quản với C# thông qua P/Inboke.




.NET framework có nhiều phương thức cho phép bạn có thể sử dụng để lấy về và thiết lập các cài đặt hệ thống, tuy nhiên việc điều khiển âm lượng bên ngoài của soundcard thì lại không nằm trong các phương thức ấy. Vì thế, chúng ta sẽ không có tùy chọn nào khác ngoài cách phải dùng đến Windows API không quản, cụ thể là gọi các hàm waveOutGetVolume()waveOutSetVolume() từ thư viện winmm.dll.




Bắt đầu là tạo 1 project mới, kéo từ toolbox cái trackbar ra form, thêm cái label cho nó chuyên nghiệp :hihi:
[C#] Sử dụng Trackbar để điều chỉnh âm thanh * 35566256

[C#] Sử dụng Trackbar để điều chỉnh âm thanh * 17901069
Bạn cũng có thể đặt ngang hay đọc tùy chương trình mình làm thôi:2:


sang properties rồi sửa giá trị Orientation thành Vertical

[C#] Sử dụng Trackbar để điều chỉnh âm thanh * 89958728

Nó thành ra thế này
[C#] Sử dụng Trackbar để điều chỉnh âm thanh * 61033023




Cũng không có thuộc tính nào của điều khiển TrackBar cần phải thay đổi - thuộc tính Minimum và Maximum nên để cho nó có giá trị mặc định tương ứng là 0 và 10. Điều này sẽ để cho điều khiển của chúng ta có 10 bước nhảy để điều khiển âm thanh. Tất nhiên, bạn có thể vặn cho nó theo ý thích của bạn, trong trường hợp bạn muốn để người dùng có khả năng điều chỉnh mức âm thanh mịn hơn.


đầu tiên bạn phải using thư viện

Bây giờ chúng ta có thể gọi đến hai hàm từ winmm.dll. DLL này được đặt trong thư mục Windows System32 và có kích thước khoảng 172 KB.


Code:
[DllImport("winmm.dll")]
public static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume);
[DllImport("winmm.dll")]
public static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume);
Đến giờ chúng ta đã sẵn sàng để gọi đến các hàm, nhưng không giống như các cuộc gọi Windows API khác, có hai vấn đề hơi khó khăn và chúng ta cần phải làm một số tính toán trước khi có thể lấy ra và thiết lập âm lượng.
Để cho ứng dụng của chúng ta làm việc đúng cách, điều trước tiên chúng ta cần làm là lấy về mức âm lượng âm thanh hiện thời và thiết lập nó lên trên TrackBar (trackWave), nếu không thì nó sẽ luôn luôn có giá trị mặc định là 0. Chúng ta muốn làm điều đó mỗi khi ứng dụng được nạp, vì thế người sử dụng ngay lập tức thấy TrackBar được điều chỉnh đúng khi ứng dụng khởi động chạy.
Do đó, trong hàm khởi tạo của form (Form1()) ngay sau dòng lệnh InitializeComponent() chúng ta sẽ đặt các dòng code sau:


Code:


// gán mặc định khi khởi động =0
uint CurrVol = 0;
waveOutGetVolume(IntPtr.Zero, out CurrVol);
ushort CalcVol = (ushort)(CurrVol & 0x0000ffff);
// gán 1 giá trị tăng lên bằng 1/10 âm lượng
trackWave.Value = CalcVol / (ushort.MaxValue / 10);
Lúc này bạn có thể biên dịch ứng dụng, và bạn sẽ thấy trackbar được điều chỉnh đúng với mức âm lượng âm thanh hiện tại. Bây giờ chúng đã sẵn sàng cho việc thay đổi âm lượng bằng cách sử dụng hàm waveOutSetVolume(). Chúng ta sẽ làm điều đó bên trong sự kiện Scroll của trackWave (điều khiển TrackBar). Để nhận được handler của sự kiện đó, bạn có thể đơn giản chỉ việc click vào điều khiển bên trong phần thiết kế form. Bây giờ, bên trong handler của sự kiện trackWave_Scroll(), dùng đoạn code như sau:


Code:

int NewVolume = ((ushort.MaxValue / 10) * trackWave.Value);

uint NewVolumeAllChannels = (((uint)NewVolume & 0x0000ffff) | ((uint)NewVolume << 16));

waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels);


[/color]
Về Đầu Trang Go down
http://k14ktqs.cntt.in/
 

[C#] Sử dụng Trackbar để điều chỉnh âm thanh *

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 

 Similar topics

-
» Điều bất ngờ khủng khiếp ^^
» Kinh tế chính trị
» Lịch thi môn Kinh tế chính trị
» Mời thành viên tham giá nhóm Lập trình
» Ca ngợi thành viên 4rum
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
 :: ____________________Diễn đàn học tập(Cấm Spam)____________________ :: Diễn đàn các môn học-
Chuyển đến