Форум: "Система";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c