Đóng mở khay CD trong .NET

Chia sẻ: Lại Văn Nghĩa | Ngày: | Loại File: DOC | Số trang:3

0
101
lượt xem
20
download

Đóng mở khay CD trong .NET

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài viết này sẽ dạy bạn cách mở và đóng khay CD/VCD bằng C# sử dụng winmm DLL và các cuộc gọi mã không quản với PInvoke. Microsoft .NET Framework không cung cấp phương thức nào để bạn có thể đơn giản trong việc gọi mở hay đóng khay CD/DVD của các ổ đĩa...

Chủ đề:
Lưu

Nội dung Text: Đóng mở khay CD trong .NET

  1. Đóng mở khay CD trong .NET Cập nhật: 26/8/2008 với no comments Xếp trong: Lập trình, C#, Application Bài viết này sẽ dạy bạn cách mở và đóng khay CD/VCD bằng C# sử dụng winmm DLL và các cuộc gọi mã không quản với PInvoke. Microsoft .NET Framework không cung cấp phương thức nào để bạn có thể đơn giản trong việc gọi mở hay đóng khay CD/DVD của các ổ đĩa... Bài viết này sẽ dạy bạn cách mở và đóng khay CD/VCD bằng C# sử dụng winmm DLL và các cuộc gọi mã không quản với PInvoke. Microsoft .NET Framework không cung cấp phương thức nào để bạn có thể đơn giản trong việc gọi mở hay đóng khay CD/DVD của các ổ đĩa máy tính. Tuy nhiên, điều đó không có nghĩa là vấn đề đưa ra không thể dễ dàng thực hiện được bằng cách sử dụng mciSendString từ Windows API. Bài viết này được viết với Visual Studio 2005, nhưng nó cũng chạy tốt cả với Visual Studio 2003. Khởi động một project C# Window Application. Kéo 2 nút đưa lên form, btnOpen và btnClose, chúng sẽ mở và đóng khay CD/DVD khi được click. Bây giờ chúng ta hãy chuyển sang chế độ code và thêm tiền chỉ thị sau vào, bởi vì chúng ta sẽ làm việc với mã không quản. view plainprint? 1. 2. using System.Runtime.InteropServices; Trong class (thường là contructor ở trên), sử dụng hai dòng mã sau đây. Chúng sẽ gọi đến file DLL winmm.dll vào mã nguồn của chúng ta, sử dụng cơ chế có tên là PInvoke. DLL này (winmm.dll) được đặt trong thư mục System32 của Windows. Hàm mciSendString được sử dụng để gửi đi một chuỗi câu lệnh đến thiết bị MCI, trong trường hợp này là ổ đĩa CD/DVD. view plainprint? 1. 2. [DllImport("winmm.dll")] 3. static extern Int32 mciSendString(String command, StringBuilder buffer, Int32 bu fferSize, IntPtr hwndCallback);
  2. Bây giờ chúng ta quay trở lại form, nhấn đúp chuột vào nút Open (btnOpen) để nhận được handler cho sự kiện Click. Trong handler này chúng ta viết mã sau: view plainprint? 1. 2. mciSendString("set CDAudio door open", null, 0, IntPtr.Zero); Chúng ta đã gửi câu lệnh set CDAudio door open tới thiết bị MCI ( ổ đĩa CD/DVD ). Bạn có thể chạy ứng dụng luôn bằng cách nhấn nút và chờ cho khay được mở ra. Bây giờ bạn có thể muốn biết làm thế nào để đòng khay lại. Hãy quay lại form, nhấn đúp chuột vào nút Close (btnClose) và dùng hàm sau để gửi tới ổ đĩa câu lệnh set CDAudio door closed. view plainprint? 1. 2. mciSendString("set CDAudio door closed", null, 0, IntPtr.Zero); Sau khi biên dịch và kiểm tra ứng dụng C# này, bạn có thể mở và đóng khay đĩa của các ổ đĩa rồi, và đó chỉ làm bởi một vài dòng mã lệnh. Tôi biết nhiều bạn sẽ đang nghĩ đến câu hỏi lúc này là:" Tôi có nhiều ổ đĩa CD/DVD và chỉ muốn một trong số chúng được mở. Làm thế nào ta có thể chọn một ổ như vậy?". Các câu lệnh gửi ở trên, chỉ là mở/đóng ổ đĩa được đánh dấu như là các ổ đĩa mặc định để chạy các CDs audio. Để mở các ổ đĩa khác, chúng ta cần chỉ ra chữ cái tên ổ mà chúng ta muốn mở là được. Nếu như bạn có hai ổ đĩa DVD -H và -I, thay đổi lại đoạn mã chúng ta viết lúc nãy trong các handler của sự kiện click vào nút bởi mã: view plainprint? 1. 2. // Open Drive H: 3. mciSendString("open H: type CDAudio alias driveH", null, 0, IntPtr.Zero); 4. mciSendString("set driveH door open", null, 0, IntPtr.Zero); 5. // Open Drive I: 6. mciSendString("open I: type CDAudio alias driveI", null, 0, IntPtr.Zero); 7. mciSendString("set driveI door open", null, 0, IntPtr.Zero);
  3. Đầu tiên chúng ta tạo ra tên bí danh cho ổ đĩa H tên là driveH, như là một kiểu CDAudio của ổ đĩa, tiếp đến trong câu lệnh thứ hai, chúng ta mở nó bằng cách chỉ ra bí danh thay vì CDAudio. Cách làm cũng sẽ tương tự với ổ đĩa I. Câu lệnh sau đây cho tât cả ổ đĩa minh họa như sau: view plainprint? 1. 2. // Close Drive H: 3. mciSendString("open H: type CDAudio alias driveH", null, 0, IntPtr.Zero); 4. mciSendString("set driveH door closed", null, 0, IntPtr.Zero); 5. // Close Drive I: 6. mciSendString("open I: type CDAudio alias driveI", null, 0, IntPtr.Zero); 7. mciSendString("set driveI door closed", null, 0, IntPtr.Zero); Chỉ cần tùy biến đoạn mã này một chút, bạn có thể sử dụng các dòng bí danh một lần, bằng cách gọi chúng trong sự kiện Load của form, và tiếp đến chỉ việc gọi các câu lệnh open door/close door trong các handler của các nút đó.
Đồng bộ tài khoản