Owieranie i zamykanie tacki CD-ROM

Witam! Proszę o podanie kodu, który będzie otwierał tacki cd-rom. Z góry dziękuję.

Odpowiedzi: 1

Form.cs [quote] using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace CDeject { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //Mój CDROM EjectMedia.Eject(@"\\.\E:"); } } } [/quote] EjectMedia.cs [quote] using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace CDeject { public class EjectMedia { // Constants used in DLL methods const uint GENERICREAD = 0x80000000; const uint OPENEXISTING = 3; const uint IOCTL_STORAGE_EJECT_MEDIA = 2967560; const int INVALID_HANDLE = -1; // File Handle private static IntPtr fileHandle; private static uint returnedBytes; // Use Kernel32 via interop to access required methods // Get a File Handle [DllImport("kernel32", SetLastError = true)] static extern IntPtr CreateFile(string fileName, uint desiredAccess, uint shareMode, IntPtr attributes, uint creationDisposition, uint flagsAndAttributes, IntPtr templateFile); [DllImport("kernel32", SetLastError = true)] static extern int CloseHandle(IntPtr driveHandle); [DllImport("kernel32", SetLastError = true)] static extern bool DeviceIoControl(IntPtr driveHandle, uint IoControlCode, IntPtr lpInBuffer, uint inBufferSize, IntPtr lpOutBuffer, uint outBufferSize, ref uint lpBytesReturned, IntPtr lpOverlapped); public static void Eject(string driveLetter) { try { // Create an handle to the drive fileHandle = CreateFile(driveLetter, GENERICREAD, 0, IntPtr.Zero, OPENEXISTING, 0, IntPtr.Zero); if ((int)fileHandle != INVALID_HANDLE) { // Eject the disk DeviceIoControl(fileHandle, IOCTL_STORAGE_EJECT_MEDIA, IntPtr.Zero, 0, IntPtr.Zero, 0, ref returnedBytes, IntPtr.Zero); } } catch { throw new Exception(Marshal.GetLastWin32Error().ToString()); } finally { // Close Drive Handle CloseHandle(fileHandle); fileHandle = IntPtr.Zero; } } } } [/quote] Więcej informacji masz tu: [url]http://www.csharpfriends.com/Forums/ShowPost.aspx?PostID=37983[/url] lub tu: [url]http://www.google.pl/search?hl=pl&rlz=1C1CHNG_plPL346PL346&q=How+to+eject+CD+rom+in+C%23&btnG=Szukaj&lr=&aq=f&oq=[/url]
newuser
Dodano
12.11.2009 20:25:04
programista
Dodano:
08.11.2009 18:41:36
Komentarzy:
1
Strona 1 / 1