400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.

Otevírání a zavírání dveří CD-ROM pomocí C# (Windows .NET)

Otevírání a zavírání dveří CD-ROM pomocí C# (Windows .NET)

Příspěvekod Wlezley » 24 duben 2012 15:20:41

Další den, další kód. :beach:
Jedná se o přepis tohoto viewtopic.php?f=6&t=11 programu v jazyce C#. :thumbup:

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. :tongue_ss:

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();
}
}
}
Uživatelský avatar
Wlezley
 
Příspěvky: 316
Registrován: 24 září 2011 22:54:46
Bydliště: Plzeň
Projekt: Wlezley EU

Zpět na C# (C sharp)

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků


cron