Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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
14-97839
Soft
2003-06-10 15:33
2003.06.30
Операционная система это очень


1-97670
KPY
2003-06-17 08:18
2003.06.30
Как два байта преобразовать в слово


7-97906
Sergik
2003-04-22 10:39
2003.06.30
Открытие файла


9-97466
Евгений Анатольевич
2002-10-11 12:34
2003.06.30
Lord of City Streets: Текстуры, объекты, анимация. (GLScene)


6-97762
HAMEL1ON
2003-04-25 02:30
2003.06.30
много потоков в TClientSocket





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский