CD auswerfen
Frank Dzaebel, erstellt am:
14.05.2007, zuletzt geändert: 14.05.2007
Kategorie:MCI, .NET-Version:2.0, [Download]
Auswerfen und Einziehen einer CD in C#.

Referenz:
mciSendString -
set,
mciGetErrorString
using System;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
namespace DriveInfoTest
{
public partial class Form1 : Form
{
private void Form1_Load(object sender, EventArgs e)
{
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
if (drive.DriveType == DriveType.CDRom)
cboCDRom.Items.Add(drive.Name);
cboCDRom.SelectedIndex = 0;
}
private void btnAuswerfen_Click(object sender, EventArgs e)
{
CdAuswerfen(cboCDRom.Text);
}
private void btnEinziehen_Click(object sender, EventArgs e)
{
CdEinziehen(cboCDRom.Text);
}
void CdAuswerfen(string driveLetter)
{
MciSendeKommando(String.Format("set CDAudio!{0} door open", driveLetter));
}
void CdEinziehen(string driveLetter)
{
MciSendeKommando(String.Format("set CDAudio!{0} door closed", driveLetter));
}
void MciSendeKommando(string kommando)
{
Cursor = Cursors.AppStarting;
StringBuilder ret = new StringBuilder();
int errCode = mciSendString(kommando, ret, sizeBuffer, IntPtr.Zero);
Cursor = Cursors.Default;
FehlerCheck(errCode, kommando);
}
[DllImport("winmm.dll", CharSet = CharSet.Auto)]
static extern Int32 mciSendString(String command,
StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);
[DllImport("winmm.dll", CharSet = CharSet.Auto)]
static extern int mciGetErrorString(int errCode, StringBuilder errText, int errLen);
/// <summary>Kein MCI-Error aufgetreten.</summary>
const int mciSuccess = 0;
/// <summary>Grösse des Buffers bei mciSendString</summary>
const int sizeBuffer = 127;
/// <summary>maximale Länge des StringBuilders bei mciGetErrorString</summary>
const int maxSB = 255;
public int FehlerCheck(int errCode, string sendCommand)
{
int err = 0;
if (errCode != 0)
{
StringBuilder errText = new StringBuilder(maxSB);
err = mciGetErrorString(errCode, errText, maxSB);
MessageBox.Show(errText.ToString() + "\r\nKommando: "+
sendCommand, "MCI Fehler");
}
return err;
}
public Form1()
{
InitializeComponent();
}
}
}