VNIT

Too lazy to think of a slogan

Trang chủ » Diễn Đàn » Lập trình và Phát triển Web » Windows Programming » Làm sao bắt sự kiện khay CDRom mở/ đóng?

Chủ đề đã bị khóa, bạn không thể xóa, sửa hay trả lời trong chủ đề này!

First Page Previous Page  1  Next Page Last Page
Locked Làm sao bắt sự kiện khay CDRom mở/ đóng?
0
question Gởi bởi freeman (8:06 04-04-2009)
Bài: 335 / Điểm VCS: 320 /

Nếu trong ổ CDRom có chứa đĩa dữ liệu, ta có thể bắt sự kiện WM_DEVICECHANGE để biết khi nào khay chứa đĩa mở/ đóng. Cách chính thống hơn thì dùng hàm API RegisterDeviceNotifycation(). Cả hai cách làm việc tương tự nhau. Tôi đã test và nó hoạt động tốt.

Tuy nhiên nếu trong ổ không chứa đĩa, Win không gửi WM_DEVICECHANGE khi khay mở/ đóng. Do vậy không thể dùng 1 trong 2 cách trên được. Vậy ta phải làm thế nào?
___________________________
sorry for my bad En...
Locked Re: Làm sao bắt sự kiện khay CDRom mở/ đóng?
0
answer Gởi bởi Thành Bá Nguyễn (9:23 04-04-2009)
Bài: 18,319 / Điểm VCS: 17,795 /

Nếu trong ổ CDRom có chứa đĩa dữ liệu, ta có thể bắt sự kiện WM_DEVICECHANGE để biết khi nào khay chứa đĩa mở/ đóng. Cách chính thống hơn thì dùng hàm API RegisterDeviceNotifycation(). Cả hai cách làm việc tương tự nhau. Tôi đã test và nó hoạt động tốt.

Tuy nhiên nếu trong ổ không chứa đĩa, Win không gửi WM_DEVICECHANGE khi khay mở/ đóng. Do vậy không thể dùng 1 trong 2 cách trên được. Vậy ta phải làm thế nào?

Nếu không chứa đĩa trong ổ thì bạn quan tâm đến việc đóng mở khay làm gì chứ?
Locked Re: Làm sao bắt sự kiện khay CDRom mở/ đóng?
0
answer Gởi bởi freeman (1:09 05-04-2009)
Bài: 335 / Điểm VCS: 320 /

Tôi có tiện ích quản lý đĩa, khi nào xử lý xong thì tự động mở khay đĩa để người dùng lấy đĩa ra. Sau đó chờ cho đến khi người dùng đóng khay đĩa lại. Có 2 trường hợp:
- Có đĩa mới: Tiếp tục vòng lặp xử lý.
- Không có đĩa: Chấm dứt hàm xử lý (điều kiện kết thúc vòng lặp).

Có nhiều cách giải quyết khác. Vd như quy định thời gian khi mở khay đĩa cho người dùng thao tác là 30 giây chẳng hạn. Sau 30 giây kiểm tra ổ đĩa, nếu không có đĩa thì kết thúc vòng lặp...

Tuy nhiên tôi muốn tập trung vào vấn đề này: Làm sao bắt sự kiện đóng/ mở khay đĩa của ổ CD/ DVDRom (tạm gọi chung là CDRom) khi không có đĩa trong khay?
___________________________
sorry for my bad En...
Locked Re: Làm sao bắt sự kiện khay CDRom mở/ đóng?
0
answer Gởi bởi security_39 (22:32 26-07-2010)
Bài: 23 / Điểm VCS: 19 /

Ý tưởng này rất hay. Mình cũng làm với việc nhận biết USB nhưng chưa nghỉ ra ứng dụng cho ổ đĩa. Mà là nhận biết có đĩa hay ko. Chiều đưa đĩa ra sau khi kết thúc công việc chắc làm được. Còn chiều ngược lại khi cho đĩa vào hay không cho thì mình chưa nghỉ ra cách nào.

Bạn làm chưa, hỗ trợ mình được ko
Locked Re: Làm sao bắt sự kiện khay CDRom mở/ đóng?
0
answer Gởi bởi freeman (2:23 27-07-2010)
Bài: 335 / Điểm VCS: 320 /

Rất tiếc tôi không làm được trường hợp còn lại. Ở mức người dùng, Windows cho phép tiếp cận một phần với phần cứng thông qua hàm DeviceIoControl(). Tôi nghĩ có thể làm được trường hợp 2 nếu như đi sâu hơn vào nhân Windows, nhưng khả năng có hạn  :)
___________________________
sorry for my bad En...
Locked Re: Làm sao bắt sự kiện khay CDRom mở/ đóng?
0
answer Gởi bởi security_39 (4:03 30-07-2010)
Bài: 23 / Điểm VCS: 19 /

Mình nghỉ cái này khó lắm. Ví dụ đặt cái j lên tay mình thì mình có cảm giác ngay, chứ đặt lên khay đĩa cdrom thì làm sao nó có cảm giác được. Khả năng phải cho ít noron nhân tạo vào nó mới được.
First Page Previous Page  1  Next Page Last Page

Thống kê

Hiện tại web site có 85,801 thành viên. Xin chào đón thành viên mới nhất meocon_th_90.

Các thành viên đã tạo 62,791 chủ đề và 241,917 bài viết trong 30 box.

Hiện có 0 thành viên và 1 khách đang trực tuyến.

Template by styleshout / Icons by Tango Icon Library and FamFamFam.