![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 или нет ? Опять типа подруг поразить ?
Фигней ты маешься. Приведи хоть один пример распространяемого продукта, где используются такие функции?