برای باز کردن درب سی دی رام یا دی وی دی رام چه کدی باید بنویسم(کد را دقیق بنویسید)
Printable View
برای باز کردن درب سی دی رام یا دی وی دی رام چه کدی باید بنویسم(کد را دقیق بنویسید)
سلام.
از این نمونه ها خیلی زیاد میتونین پیدا کنین :
کد:namespace EjectMedia
{
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;
[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;
}
}
}
}
و برای استفاده از اون :
موفق باشین.کد:EjectMedia.EjectMedia.Eject(@"\\.\F:");
ببخشید این کد مال vb.net هست
نه این در #C پیاده شده ولی برای پیاده سازی اون در VB مشکلی وجود نداره.
مهم الگوریتم کار هست. در Net. زبان ها تنها از نظر syntax با هم تفاوت دارن و همگی از یک مجموعه
Object ها استفاده میکنن. کافی کمی کد برنامه رو دستکاری کنین.