ĐóngmởkhayCDtrong.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à đóngkhay 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 đóngkhay CD/DVD
của các ổ đĩa
Bài viết này sẽ dạy bạn cách mở và đóngkhay 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 đóngkhay 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à đóngkhay 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 plain print ?
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 plain print ?
1.
2. [DllImport("winmm.dll")]
3. static extern Int32 mciSendString(String command, StringBuilder buffer, Int32 bu
fferSize, IntPtr hwndCallback);
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 plain print ?
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 để đòngkhay 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 plain print ?
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à đóngkhay đĩ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 plain print ?
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);
Đầ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 plain print ?
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 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ạ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