Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Eject and close CDROOM tự động bằng C#

    không biết có ai post lên chưa!
    tui viết tạo xong chương trình eject and close ổ đĩa CDRoom một cách tự động
    anh em nhận xét nhé. mình mới tập viết thui.

    (đang cố hoàn thiện hook phím tắt!)

    rất cám ơn sự nhận xét của mọi người!

    đây là bản trên window của nó. Tạo 1 form và kéo thêm 2 button: Eject, Close vào là ok.

    Mã:
    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices; namespace EjectCDRoomWindow{    public partial class Form1 : Form    {        /// Drive type of CDRoom.        private const uint DRIVE_ROOM = 5;         // Drive name.        private String drive = "";         /// <summary>        /// Default contructor.        /// </summary>        public Form1()        {            InitializeComponent();             // Gets label of CDRoom.            drive = this.DiscDrives();        }         /// <summary>        ///         /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnEject_Click(object sender, EventArgs e)        {            this.OpenCDRoom(drive);        }         /// <summary>        ///         /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnClose_Click(object sender, EventArgs e)        {            this.closeCDRoom(drive);        }         /// <summary>        /// declare method GetDriveType to get label of CDRoom.        /// </summary>        /// <param name="driveName"></param>        /// <returns></returns>        [DllImport("kernel32", SetLastError = true)]        public static extern int GetDriveType(String driveName);         /// <summary>        /// Gets label of CDRoom.        /// </summary>        /// <returns>        /// Label of cdroom.        /// </returns>        private String DiscDrives()        {            String letter = "";            foreach (String drive in Environment.GetLogicalDrives())            {                int i = GetDriveType(drive);                if (DRIVE_ROOM == i)                {                    letter += drive.ToCharArray()[0];                }            }             return letter;        }         /// <summary>        /// declare method mciSendingStringA to open and close CDRoom.        /// </summary>        /// <param name="lpstrCommand"></param>        /// <param name="lpstrReturnString"></param>        /// <param name="uReturnLength"></param>        /// <param name="hwndCallback"></param>        [DllImport("winmm.dll", EntryPoint = "mciSendStringA")]        public static extern void mciSendStringA(string lpstrCommand, string lpstrReturnString,            long uReturnLength, long hwndCallback);         /// <summary>        /// Opens cdroom.        /// </summary>        /// <param name="drive"></param>        private void OpenCDRoom(String drive)        {            String returnString = "";            mciSendStringA("set cdaudio!" + drive + " door open", returnString, 0, 0);        }         /// <summary>        /// Close cdroom.        /// </summary>        /// <param name="drive"></param>        private void closeCDRoom(String drive)        {            String returnString = "";            mciSendStringA("set cdaudio!" + drive + " door closed", returnString, 0, 0);        }    }}

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    dài thế anh. Nhưng mà ứng dụng nho nhỏ này lại hay đấy!!!!

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    mình không biết bạn gọi thẳng 2 method open và close như thế nào. trong code trên của mình cũng gọi thẳng đó chứ. chú ý bạn phải dùng 2 method GetDriverType và mciSendString nhé.

    còn việc sử dụng DllImport thì để dùng function GetDriverType và mciSendString của 2 dll tương ứng thôi. cách này đc dùng rất nhiều.
    bạn cũng có thể ko cần dùng dllImport, bạn có thể add reference cho nó rồi dùng bình thường.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Thanks bạn nhiều ,mình mới bắt đầu làm quen với C# thôi.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •