Další den, další kód.
Jedná se o přepis tohoto
viewtopic.php?f=6&t=11 programu v jazyce C#.
Psal jsem to tehdy jen tak ze srandy. Také mi vrtalo hlavou, jak se ve Windows otevírá CD mechanika. Hledal jsem ten nejjednodušší způsob, jak toho dosáhnout. Nakonec jsem našel funkci
mciSendString() v knihovně
winmm.dll. Tato funkce slouží k odesílání řetězců příkazů na
MCI zařízení. Seznam řetězců příkazů najdete na MSDN:
Multimedia Command Strings.
Import dynamické knihovny zajišťuje
DllImport atribut (nachází se ve jmenném prostoru
System.Runtime.InteropServices). O importování knihoven a linkování budu mluvit jindy.
RAW CODE |
/* ========================================= * * (c) 2012 Wolf Officious * * CDrom Opener * * ========================================= */
using System; using System.Text; using System.Threading; // Thread.Sleep() using System.Runtime.InteropServices; // DllImport()
namespace CDromOpener { public class MainProgram { // Import DLL [DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi)] protected static extern int mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, IntPtr hwndCallback);
public static void Main(string[] args) { // Open CDAudio string mciSendString("open CDAudio", null, 0, IntPtr.Zero);
// Open CD-ROM door Console.WriteLine("Opening CD-ROM door ..."); mciSendString("set CDAudio door open", null, 0, IntPtr.Zero);
// Plays sound signal Console.Beep(540, 100); Console.Beep(740, 100);
// Waiting ... Console.WriteLine("Waiting ..."); Thread.Sleep(2000);
// Close CD-ROM door Console.WriteLine("Closing CD-ROM door ..."); mciSendString("set CDAudio door closed", null, 0, IntPtr.Zero);
// Plays sound signal Console.Beep(740, 100); Console.Beep(540, 100);
// Close CDAudio string mciSendString("close CDAudio", null, 0, IntPtr.Zero);
// PAUSE Console.Write("Pokračujte stisknutím libovolné klávesy..."); Console.ReadKey(); } } } |