Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.30;
Скачать: CL | DM;

Вниз

CD-Rom и все что с ним связано...   Найти похожие ветки 

 
BaRToV   (2003-04-13 13:13) [0]

Облазив кучу форумов так и не нашел толковых ответов на
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, а не указанный.

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


 
Giemgo   (2003-04-13 13:23) [1]

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

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


 
Song ©   (2003-04-13 13:41) [2]

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


 
BaRToV   (2003-04-13 13:46) [3]

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

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


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

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


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

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


 
NA ©   (2003-04-14 01:10) [6]

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


 
Songoku ©   (2003-04-14 01:12) [7]

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;


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


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

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


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

2 NA ©

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

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


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

2 Songoku ©

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

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


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

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


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

> Осталось только узнать открыт ли 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]);

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


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

http://delphimaster.net/view/7-1050226093/


 
Жук ©   (2003-04-21 11:06) [14]


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

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



Страницы: 1 вся ветка

Текущий архив: 2003.06.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
3-97548
_Andrew_
2003-06-07 02:05
2003.06.30
Ускорение поиска


14-97862
Fly Iron Man
2003-06-11 20:33
2003.06.30
Программа, выводящая свой исходнй текст


1-97672
McSimm2
2003-06-17 13:10
2003.06.30
Фиксированный столбез в StringGrid


3-97499
vvvvv
2003-06-05 11:51
2003.06.30
Из списка драйверов пропал Oracle. Как восстановить?


3-97493
OlegM
2003-06-05 11:49
2003.06.30
Подскажите компоненты для c базой без BDE