Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CD-Rom и все что с ним связано... [D5, WinXP]


BaRToV ©   (2003-04-13 13:13:00) 

Облазив кучу форумов так и не нашел толковых ответов на
1) Как узнать открыт ли CD-R/RW.
2) Как открыть/закрыть CD-R/RW по указанному диску, т.е. если несколько CD в системе ("F:","G:").

mciSendString("Set cdaudio door closed wait", nil, 0, handle);
Закрывает только CD-R, на CD-RW это не дейтсвует.
При этом закроет все CD-R, а не указанный.

Заранее благодарен.


Жук   (2003-04-21 11:06:00) [1]


> BaRToV (14.04.03 11:55)
> Пожалуй тема закрыта...

Почти закрыта. Осталось определить лежит ли диск в подстаканнике, когда тот открыт, или нет.


BaRToV   (2003-04-19 10:51:00) [2]

http://www.delphimaster.ru/cgi-bin/forum.pl?look=1&id=1050226093&n=2


BaRToV   (2003-04-14 11:55:00) [3]

> Осталось только узнать открыт ли CD-R/RW?!...

Немного подправим:
procedure CloseCD(Drive: string);

function DriveReady(Drv: string): Boolean;
var
NotUsed: DWORD;
begin
Result := GetVolumeInformation(PChar(Drv), nil, 0, nil,
NotUsed, NotUsed, nil, 0);
end;

...

Drv := "g:";

if (GetDriveType(PChar(Drv + "\")) = DRIVE_CDROM) and
(not DriveReady(Drv + "\")) then
CloseCD(Drv[1]);

Пожалуй тема закрыта...
Всем спасибо!


Черт   (2003-04-14 04:33:00) [4]

Удалено модератором


BaRToV   (2003-04-14 02:58:00) [5]

2 Songoku ©

Код работает отлично, как для CD-R, так и для CD-RW.
Спасибо!

Осталось только узнать открыт ли CD-R/RW?!...


BaRToV   (2003-04-14 02:01:00) [6]

2 NA ©

>На iXBT порядка пяти-шести тем об этом. Минимум три из них достаточно информативные. Все достаточно старые.

че-то на http://www.ixbt.com/я не нашел, может ссылки подкинишь?...


BaRToV   (2003-04-14 01:36:00) [7]

Как посмотрю (сегодня утром) так сразу сообщу!
Если у кого-то есть еще идеи пишите.


Songoku   (2003-04-14 01:12:00) [8]

procedure OpenCD(w:pchar);
var
OpenParm:MCI_OPEN_PARMS;
DeviceID:DWORD;
begin
OpenParm.dwCallback:=0;
OpenParm.lpstrDeviceType := "CDAudio";
OpenParm.lpstrElementName := Pchar(w+":");
mciSendCommandA(0, MCI_OPEN, MCI_OPEN_TYPE or MCI_OPEN_ELEMENT, Longint(@OpenParm));
DeviceID:=OpenParm.wDeviceID;
mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
mciSendCommand(DeviceID, MCI_CLOSE, MCI_OPEN_TYPE or MCI_OPEN_ELEMENT, Longint(@OpenParm));
end;

procedure CloseCD(w:pchar;f:HWnd);
var
OpenParm:MCI_OPEN_PARMS;
DeviceID:DWORD;
begin
OpenParm.dwCallback:=0;
OpenParm.lpstrDeviceType := "CDAudio";
OpenParm.lpstrElementName := pchar(w+":");
mciSendCommandA(0, MCI_OPEN, MCI_OPEN_TYPE or MCI_OPEN_ELEMENT, Longint(@OpenParm));
DeviceID:=OpenParm.wDeviceID;
mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
mciSendCommand(DeviceID, MCI_CLOSE, MCI_OPEN_TYPE or MCI_OPEN_ELEMENT, Longint(@OpenParm));
end;


Скажи если работает на двух????


NA   (2003-04-14 01:10:00) [9]

На iXBT порядка пяти-шести тем об этом. Минимум три из них достаточно информативные. Все достаточно старые.


BaRToV   (2003-04-14 00:54:00) [10]

Жалко что ни кто не занет ответа...


BaRToV   (2003-04-13 15:31:00) [11]

Что-то слабовато ;-(


BaRToV   (2003-04-13 13:46:00) [12]

> А ты не объяснишь, зачем тебе такая супер программа...
Это не пргограмма, а компонент для KOL.

Ну ведь Total Commander делает это, а ведь он написан на Д5...


Song   (2003-04-13 13:41:00) [13]

Есть одна из MCI команд, которая определяет статус. По-моему это status. Но она работает криво. Не всегда определяет и только после того как пользователь вставит или вытащит диск. Связано это с тем, что для системы состояние, когда нет диска и состояние, когда CD-ROM выдвинут - одно и тоже.


Giemgo   (2003-04-13 13:23:00) [14]

Вау. А ты не объяснишь, зачем тебе такая супер программа, которая знает открыт CD или нет ? Опять типа подруг поразить ?

Фигней ты маешься. Приведи хоть один пример распространяемого продукта, где используются такие функции?


Наверх

Титульная страница Поиск, карта сайта Написать письмо