Đóng mở khay CD trong .NET
Số trang: 3
Loại file: doc
Dung lượng: 88.50 KB
Lượt xem: 7
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
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 winmmDLL và các cuộc gọi mã không quản với PInvoke. Microsoft .NET Framework khôngcung cấp phương thức nào để bạn có thể đơn giản trong việc gọi mở hay đóng khayCD/DVD của các ổ đĩa...
Nội dung trích xuất từ tài liệu:
Đóng mở khay CD trong .NETĐóng mở khay CD trong .NETCập nhật: 26/8/2008 với no commentsXếp trong: Lập trình, C#, ApplicationBài viết này sẽ dạy bạn cách mở và đóng khay CD/VCD bằng C# sử dụng winmmDLL và các cuộc gọi mã không quản với PInvoke. Microsoft .NET Framework khôngcung cấp phương thức nào để bạn có thể đơn giản trong việc gọi mở hay đóng khayCD/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 winmmDLL 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ảntrong 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ụngmciSendString từ Windows API. Bài viết này được viết với Visual Studio 2005, nhưngnó 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àmmciSendString được sử dụng để gửi đi một chuỗi câu lệnh đến thiết bị MCI, trongtrườ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);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 setCDAudio 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ủacá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/DVDvà 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ạnmã 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);Đầ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ểuCDAudio của ổ đĩa, tiếp đến trong câu lệnh thứ hai, chúng ta mở nó bằng cách chỉ rabí 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âulệnh open door/close door trong các handler của các nút đó.
Nội dung trích xuất từ tài liệu:
Đóng mở khay CD trong .NETĐóng mở khay CD trong .NETCập nhật: 26/8/2008 với no commentsXếp trong: Lập trình, C#, ApplicationBài viết này sẽ dạy bạn cách mở và đóng khay CD/VCD bằng C# sử dụng winmmDLL và các cuộc gọi mã không quản với PInvoke. Microsoft .NET Framework khôngcung cấp phương thức nào để bạn có thể đơn giản trong việc gọi mở hay đóng khayCD/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 winmmDLL 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ảntrong 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ụngmciSendString từ Windows API. Bài viết này được viết với Visual Studio 2005, nhưngnó 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àmmciSendString được sử dụng để gửi đi một chuỗi câu lệnh đến thiết bị MCI, trongtrườ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);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 setCDAudio 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ủacá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/DVDvà 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ạnmã 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);Đầ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ểuCDAudio của ổ đĩa, tiếp đến trong câu lệnh thứ hai, chúng ta mở nó bằng cách chỉ rabí 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âulệnh open door/close door trong các handler của các nút đó.
Tìm kiếm theo từ khóa liên quan:
thủ thuật máy tính công nghệ thông tin tin học quản trị mạng computer networkGợi ý tài liệu liên quan:
-
52 trang 429 1 0
-
24 trang 353 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 312 0 0 -
Làm việc với Read Only Domain Controllers
20 trang 299 0 0 -
74 trang 294 0 0
-
96 trang 291 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 288 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 278 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 274 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 269 1 0